function Newton()
syms x;
f=x.^5-12.5*x.^4 +57.5*x.^3 -118.75*x.^2 + 105.5625*x -29.53125;%%需求解的函数
df=diff(f,x);%%函数求导
FX=inline(x-f/df);%%构造Newton迭代公式
n=input("请输入迭代原点的个数:");
x=zeros(1,n);
len=zeros(1,n);
disp("请输入各迭代原点:");
for i=1:n
x(1,i)=input("迭代原点");
end
fid=fopen('iteration.txt','w');%%将所得数据写入文件
fprintf(fid,'iteration');
for j=1:n%%打印表头
fprintf(fid,' x%d',j);
end
a=zeros(10,n);
for j=1:n %%迭代求解
x0=x(1,j);
i=1;
a(1,j)=x(1,j);
while true
x0=feval(FX,x0);
i=i+1;
a(i,j)=x0;
if(abs(a(i,j)-a(i-1,j))<1e-8)
len(1,j)=i;
break;
end
end
end
for j=1:max(max(len)) %%将每次迭代的结果写入文件
fprintf(fid,'\n%6d ',j-1);
for k=1:n
if((len(1,k)>j)&&a(j,k)>0)
fprintf(fid,' %10.8f',a(j,k));
else
fprintf(fid,' ');
end
end
end
fclose(fid);
end
牛顿迭代法解非线性方程matlab源码
最新推荐文章于 2023-08-25 07:13:16 发布