MATLAB牛顿迭代法

  • 格式:docx
  • 大小:17.63 KB
  • 文档页数:2

matlab代码
1.定义函数
function y=f(x)
y=f(x);%函数f(x)的表达式
end
function z=h(x)
z=h(x);%函数h(x)的表达式
end

2.主程序
x=X;%迭代初值
i=0;%迭代次数计算
while i<= 100%迭代次数
x0=X-f(X)/h(X);%牛顿迭代格式
if abs(x0-X)>0.01;%收敛判断
X=x0;
else break
end
i=i+1;
end
fprintf('\n%s%.4f\t%s%d','X=',X,'i=',i) %输出结果

牛顿迭代法(matlab)
来源: 徐力的日志
背景:

牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson me
thod),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。

设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)
的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)
/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与
x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的
近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿
迭代公式。

现用牛顿迭代法(matlab)求方程x^3-2x-1=0的根(-1)。
主函数:
function [x,k]=Newtondd(f,x0,e)
%%牛顿迭代法,求f(x)=0在某个范围内的根。
%%f为f(x),x0为迭代初值,e为迭代精度。k为迭代次数
x_a=x0;
x_b=x_a-subs(f,x_a)/subs(diff(f),x_a);
k=1;
while abs(x_a-x_b)>e,
k=k+1;
x_a=x_b;
x_b=x_a-subs(f,x_a)/subs(diff(f),x_a);
end
x=x_b;

运行:
>> syms x;
>> f=(x^3-2*x-1)
...