Matlab 牛顿迭代法(1)牛顿法

一、牛顿迭代公式

1、定义

 2、原理推导

 泰勒公式:

 常用的8个泰勒公式:

 推导:

将f(x)=f(x)在Xk 处的泰勒公式展开:

f(x)=f(Xk)+f(Xk)`(X-Xk)+    f(Xk)`/2  *(x-Xk)^2+..........

我们吧线性的一部分先拿出来:f(x)=f(Xk)+f(Xk)`(X-Xk) =0;

 3、几何意义

盗图:

扫描二维码关注公众号,回复: 14946547 查看本文章

MATLAB之牛顿迭代法_newton迭代法 matlab_天涯铭的博客-CSDN博客

 图中直线表示的是在x0出的斜率,可以表示为:

f(x)`=f(x)/x0-x1

化简后得到:  x1=x0-f(x0)/f(x)`

4、牛顿法的收敛条件

若 x在【a,b】区间是2连续的,那么牛顿法的条件如下:

a、f(a)*f(b)<0;

b、f(x)`!=0

c、f(x)``在【a,b】区间上是同符号

d、f(x)``*f(x0)>0  .x0在【a,b】;

牛顿迭代法的收敛性取决于x0的选择,所以x0的选取很重要

 

 二、算法流程

 eg:f(x)=x^3−x 

数值分析——Newton迭代法求解方程附Matlab程序_用newton法求方程_Edword_adra的博客-CSDN博客s

这里的案例的前提是在【0,1】的区间f(x)=x^3−x 是收敛的 

>> max=0.000000;
phi=10^(-4); %收敛的精度
step=0.0001;   %设置迭代的步长
for i=0:step:1		%将区间按0.0001分割
    x1=i;			%初值大小
    newton=@(x)x - (x^3/3-x)/(x^2-1);%f(x)=x^3/3-x内部函数
	f_1=@(x)3*x-1; % 计算是否存在2阶导数
	 mm=f_1(x1);
	if  mm==0
	break;
	end;
    k=0;
	err=1.000;%允许误差大小
    while(err>phi)
        x2=newton(x1); % 计算牛顿
        err=abs(x2-x1);
        x1=x2;
        k=k+1;
        %fprintf('%d  %1.15d   %1.15f\n',k,x1,err);
        if x1==0
            max=i;        %记录的最大值
        end
    end
end
fprintf('max= %1.15f\n',max)
max= 0.774300000000000
>> 

三、解方程组

猜你喜欢

转载自blog.csdn.net/weixin_39354845/article/details/130407843
今日推荐