牛顿法
迭代公式:(1)2()1()[()]()k k k k x x f x f x +-=-??
Matlab 代码:
function [x1,k] =newton(x1,eps)
hs=inline('(x-1)^4+y^2'); 写入函数
ezcontour(hs,[-10 10 -10 10]); 建立坐标系
hold on; 显示图像
syms x y 定义变量
f=(x-1)^4+y^2; 定义函数
grad1=jacobian(f,[x,y]); 求f 的一阶梯度
grad2=jacobian(grad1,[x,y]); 求f 的二阶梯度
k=0; 迭代初始值
while 1 循环
grad1z=subs(subs(grad1,x,x1(1)),y,x1(2)); 给f 一阶梯度赋初值 grad2z=subs(subs(grad2,x,x1(1)),y,x1(2)); 给f 二阶梯度赋初值 x2=x1-inv(grad2z)*(grad1z)'; 核心迭代公式
if norm(x1-x2)break;
else
plot([x1(1),x2(1)],[x1(2),x2(2)],'-r*'); 画图
k=k+1; 迭代继续
x1=x2; 赋值