MATLAB之牛顿迭代法

MATLAB之牛顿迭代法

一、算法原理

1、迭代公式
将 f (x)在点xk做Taylor展开f(x)=f(xk)+f’(xk)(x-xk)+…,则有

在这里插入图片描述由上式可得牛顿迭代公式为:

X(k+1)=X(k)- f (X(k))/f’(X(k))

2、牛顿法的几何意义在这里插入图片描述
由上式可知,如果如果我们选择x0作为初始点,点(x0,f(x0))的切线方程为y-f(x0)=f’(x0)(x-x0),该切线方程与x轴交点的横坐标为
X(1)=X(0)- f (X(0))/f’(X(0)),然后以x1为初始点,继续循环上述过程。在该过程中,不断的对f(x)做切线,因此牛顿迭代法也叫且宪法。
3、牛顿法的收敛性
设f (x)在[a, b]上存在二阶连续导数且满足下列条件:
(1)f (a)*f (b) < 0;
(2)f’(x) ≠0;
(3)f’’(x) 在区间[a,b]上不变号;
(4)取x0∈ [a, b],使得f’’(x)f (x0) >0
则牛顿迭代序列{xk}二阶收敛于f (x)在[a, b]上的唯一单根x

需要注意的是,牛顿迭代法的收敛性取决于x0的选择。
在这里插入图片描述
二、matlab程序


```bash
clc
clear
syms x
h=x.^3+x.^2-1;
fplot(h);
x0=NW(h,1,100);
function result=NW(h,x,n)
f=matlabFunction(h);  %将符号函数变为匿名函数h=@(x) x.^3+x.^2-1
f1=matlabFunction(diff(h));
X(1)=x;
i=2;
while 1
    X(i)=X(i-1)-f(X(i-1))/f1(X(i-1));
    if abs(f(X(i))) <1e-6
         result=X(i);
         return;
    end
    if i>n
        result=X(i);
        return;
    end
    i=i+1;
end
end

  • 19
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值