MATLAB無約束多維極值之牛頓法

2021-10-05 06:43:20 字數 2232 閱讀 1261

無約束優化問題的目標函式為:

多維極值的牛頓法,不同於之前介紹過的梯度下降法,該方法引入了二階導數的資訊,假設當前迭代到第 kk 次,將目標函式在自變數 xk 處展開為二階泰勒級數:

f(x)兩端同時對 x求導,導數為零求得的極值點就是下一次迭代的取值 xk+1。式中將

則式(2)可化簡為

綜上,式中-hk^(-1)gk即為搜尋方向。

f=@(x1,x2) (x1-4)^2+(x2+2)^2+1;

[x,result]=min_newton(f,[-0.6 0.2],1e-6,100)

function [x,result]=min_newton(f,x0,eps,n)

tidu=gradient(sym(f),symvar(sym(f)));% 計算出梯度表示式

haisai=jacobian(tidu,symvar(tidu));%計算出海塞矩陣表示式

var_tidu=symvar(tidu); %梯度表示式中變數的個數

var_haisai=symvar(haisai); %海塞矩陣中變數的個數

var_num_tidu=length(var_tidu); %梯度的維數

var_num_haisai=length(var_haisai); %海塞矩陣的維數

tidu=matlabfunction(tidu);%將梯度表示式轉換為匿名函式

flag = 0;

if var_num_haisai == 0 %海塞矩陣變數的個數為零,也就是說海塞矩陣是常數

haisai=double((haisai));

flag=1; %海塞矩陣為常量的標誌

end%求當前點梯度與海賽矩陣的逆

f_cal='f(';

tidu_cal='tidu(';

haisai_cal='haisai(';

for k=1:length(x0) %求得初始變數的x0的元素個數

f_cal=[f_cal,'x0(',num2str(k),'),'];%組裝f_cal=f(x0(k))求得該點函式值

for j=1: var_num_tidu %求得梯度中的元素個數

if char(var_tidu(j)) == ['x',num2str(k)]

tidu_cal=[tidu_cal,'x0(',num2str(k),'),'];%組裝tidu_cal=tidu_cal(x0(k)求得該點梯度值

endend

for j=1:var_num_haisai

if char(var_haisai(j)) == ['x',num2str(k)]

haisai_cal=[haisai_cal,'x0(',num2str(k),'),'];%組裝haisai_cal=haisai_cal(x0(k)求得該點海塞矩陣的值

endend

endhaisai_cal(end)=')'; %完成海塞矩陣封裝

tidu_cal(end)=')';%完成梯度封裝

f_cal(end)=')';%完成函式封裝

switch flag %根據標誌位判斷海塞矩陣表示式中是否有引數

case 0 %有引數

haisai=matlabfunction(haisai);

dk='-eval(haisai_cal)^(-1)*eval(tidu_cal)';

case 1 %無引數

dk='-haisai^(-1)*eval(tidu_cal)';

haisai_cal='haisai';

endi=1;

while i < n %設定最大迭代次數n

if rcond(eval(haisai_cal)) < 1e-6 %計算海塞矩陣的條件數 條件數越大,逆陣結果越不穩定

disp('海賽矩陣病態!'); %條件數超出範圍,示為病態矩陣

break;

endx0=x0(:)+eval(dk); %eval函式將字串轉換為指令

if norm(eval(tidu_cal)) < eps

x=x0;

result=eval(f_cal);

return;

endi=i+1;

enddisp('無法收斂!'); %超出迭代範圍

x=;result=;

end

MATLAB 無約束一維極值問題

無約束一維極值問題 極值問題表示式 min f x x,x x1 x2 一維極值的搜尋方式包括線性搜尋和非線性搜尋,線性搜尋包含 分割法 斐波那契法和牛頓法,非線性方法包含拋物線法和三次樣條插值。1 進退法 演算法原理 進退法就是用來確定搜尋區間的演算法,理論依據 f x 為函式有一極值,且 a b...

MATLAB無約束一維極值之二次插值法

設曲線f x 尋找到其極值區間 x1,x2 使其滿足f x1 f x1 x2 2 f x1 x2 2 f x ax 2 bx c,a b c 為係數。ax1 2 bx1 c f x1 ax2 2 bx2 c f x2 ax3 2 bx3 c f x3 寫成矩陣形式 x1 2 x1 1 a f x1 ...

無約束極值 線性分類器和線性回歸基礎

總結無約束極值的基本內容以及線性分類器和回歸的基礎知識,包含梯度下降 相比於約束極值問題,無約束極值問題去掉了約束,因此表述方式非常簡單 mi nf x x en 1 現假設f x 有一階連續偏導,極小值點為x x k 為第k次接近。在x k 點沿著方向p k 做射線,有 x k 1 x k p k...