多変数関数の極値を MATLAB で求め方

fmincon関数は、MATLABで最適化ツールボックスを使用して、多次元関数の極値を求めるために使用できます。

はじめに多変量関数を定義します。たとえば、二変数関数f(x, y) = x^2 + y^2 – 2xy – 3x – 5yを定義します。

function z = myFunction(x)
z = x(1)^2 + x(2)^2 - 2*x(1)*x(2) - 3*x(1) - 5*x(2);
end

続いて、最適化問題の制約条件を設定する。制約条件には、上下限を設定できる。例えば、xとyの範囲を[-10, 10]に設定する。

lb = [-10, -10];
ub = [10, 10];

初期点を定めます。初期点は範囲内の任意の点を指定できます。たとえば初期点を[0, 0]とします。

x0 = [0, 0];

パーラメータを更新したらfmincon関数によって最適化が実行されます。

options = optimoptions('fmincon', 'Display', 'iter');
[x, fval] = fmincon(@myFunction, x0, [], [], [], [], lb, ub, [], options);

最後に、結果を出力します。

disp(['x = ', num2str(x(1))]);
disp(['y = ', num2str(x(2))]);
disp(['fval = ', num2str(fval)]);

上記コードを実行すると、多変数関数の極値点が求まります。

特定の問題に合わせて、追加制約、非線形制約などが必要になる可能性があるので、状況に応じて調整してください。

bannerAds