function [x_star,index,it] = Newton(fun,x,ep,it_max)
%x_star为迭代的解
%x为初始值
%fun为函数和他的导数
%ep为精度
%it为迭代次数
%it_max为最大迭代次数
%index为迭代成功标志
if nargin<4 it_max=100;end
if nargin<3 ep=1e-5;
end
index=0;k=0;
while k<it_max %开始迭代
x1=x;f=feval(fun,x);
x=x-f(1)/f(2);
if abs(x-x1)<ep
index=1;break;
end
k=k+1;
end
x_star=x;it=k;
%求零点
fun=inline('[54*x^6+45*x^5-102*x^4-69*x^3+35*x^2+16*x-4,324*x^5+225*x^4-408*x^3-207*x^2+70*x+16]');
x_out=[]
for x = -2:0.5:2
[x_star,index,it] = Newton(fun,x,1.0000e-8);
x_out = [x_out,x_star]
end
评论2