?? ninewton.m
字號(hào):
%擬牛頓法極小化函數(shù)的通用子函數(shù),gonge.m
%輸入變量為初始的迭代點(diǎn),輸出變量為極小值點(diǎn)
function x0=ninewton(x)
%判斷梯度范數(shù)是否滿足計(jì)算精度的要求.是,標(biāo)志變量設(shè)為1,輸出結(jié)果;否,標(biāo)志變量設(shè)為0,繼續(xù)迭代
if sum(abs(tidu(x)).^2)<1e-4
flag=1;
x0=x;
else
flag=0;
end
%初始的H矩陣為單位矩陣
h0=eye(4);
%循環(huán)求解函數(shù)的極小點(diǎn)
while flag==0
%計(jì)算新的迭代方向
d=-h0*tidu(x)';
a=gold(x,d);
x1=(x'+a*h0*d)';
s=x1-x;
y=tidu(x1)-tidu(x);
v=s*y';
%校正H矩陣
h0=(eye(4)-s'*y./v)*h0*(eye(4)-y'*s./v)+s'*s./v;
%判斷下一次和上一次迭代點(diǎn)之差是否滿足計(jì)算精度的要求.是,標(biāo)志變量設(shè)為1,輸出結(jié)果;否,標(biāo)志變量設(shè)為0,繼續(xù)迭代
if sum(abs(x-x1).^2)<1e-4
flag=1;
x0=x;
else
flag=0;
end
x=x1;
end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -