レーベンバーグ・マルカート アルゴリズムを使用して多次元関数の最小値を求める

Levin-Bergmarquardt アルゴリズムは、勾配法とニュートン法の利点を継承しており、パラメータを調整することで 2 つのアルゴリズムを切り替えることができ、関数の最小値を解く際、特に最小問題を解く際に優れた特徴を持っています。未知のパラメータを入力し、
MATLAB コードを直接添付します。

% Set initial guess
x0 = [0; 0; 0];
% Define options for lsqnonlin
options = optimoptions('lsqnonlin','Algorithm','levenberg-marquardt','MaxIterations',1000);
% Call lsqnonlin to minimize the function
[x_min,~,~,~,~] = lsqnonlin(@rosenbrock,x0,[],[],options);
% Calculate the minimum value of the function
y_min = rosenbrock(x_min);
% Print the minimum value and corresponding point
fprintf('Minimum value: %f\n', y_min);
fprintf('Minimum point: (%f, %f, %f)\n', x_min(1), x_min(2), x_min(3));
function y = rosenbrock(x)
% Rosenbrock function
y = x(2)^2 +x(1)^2 + x(3)^2;
end

結果:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_45362665/article/details/129811768