📄 ninewton.m
字号:
%拟牛顿法极小化函数的通用子函数,gonge.m
%输入变量为初始的迭代点,输出变量为极小值点
function x0=ninewton(x)
%判断梯度范数是否满足计算精度的要求.是,标志变量设为1,输出结果;否,标志变量设为0,继续迭代
if sum(abs(tidu(x)).^2)<1e-4
flag=1;
x0=x;
else
flag=0;
end
%初始的H矩阵为单位矩阵
h0=eye(4);
%循环求解函数的极小点
while flag==0
%计算新的迭代方向
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;
%判断下一次和上一次迭代点之差是否满足计算精度的要求.是,标志变量设为1,输出结果;否,标志变量设为0,继续迭代
if sum(abs(x-x1).^2)<1e-4
flag=1;
x0=x;
else
flag=0;
end
x=x1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -