MATLAB之牛顿迭代法
MATLAB之牛顿迭代法一、算法原理1、迭代公式将 f (x)在点xk做Taylor展开则有由上式可得牛顿迭代公式为: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(...
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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)