牛顿迭代法解非线性方程matlab源码

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
  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值