matlab牛顿迭代法实例及代码

matlab牛顿迭代法实例及代码

在这里插入图片描述
在这里插入图片描述

MATLAB代码如下:

x=linspace(0,15);
y=(x-1).*(x-3).*(x-9).*(x-12);
plot(x,y);%画函数图像
%将坐标轴平移到原点
ax = gca;
ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin';
%将坐标轴平移到原点
xlabel('x');
ylabel('y');
x0=15*rand(1);%生成初始值x0
syms X Y DY;
Y=(X-1).*(X-3).*(X-9).*(X-12);
DY=diff(Y,X);
sign=1;%循环进行条件
T=0;%循环次数
while(sign==1)
         Y0=double(subs(Y,X,x0));%计算Y(X0),加double变为浮点型
         DY0=double(subs(DY,X,x0));%计算Y在X0的导数,加double变为浮点型
         x0=x0-(Y0/ DY0); %迭代公式
         con=abs(Y0/ DY0);%计算Y0/ DY0的绝对值
         if(con<=0.01)%con<=0.01循环终止条件
            sign=0;
         else
            sign=1;
            T=T+1;
         end
    end


由于随机生成的初始值在12附近,因此最终求得的根为12,也体现出来牛顿迭代法的一个缺陷—不能求出所有根,一般情况只能求出初始值附近的根。牛顿迭代法原理、不足等可参考博文:https://blog.csdn.net/zsjzliziyang/article/details/110646314

`在这里插入图片描述

  • 11
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值