求方程的值——牛顿迭代法

时间:2023-01-07 20:23:21
求解方程:

2X^3 - 4x^2 +3X-6 = 0

解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。

(一)若函数f(x)在点的某一邻域内具有直到(n+1)阶导数,则在该邻域内f(x)的n阶泰勒公式为:

 f(x)=f(x0)+f`( x0)(x- x0)+f``( x0)(x-x0)²/2!+f```( x0)(x- x0)³/3!+...fn(x0)(x- x0)^n/n!+.... 其中:fn(x0)(x- x0)^n/n!,称为拉格朗日余项。

 以上函数展开式称为泰勒级数。 

(二)

 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=0 

设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x n+1=x n -f(x n ) /f'(x n )。

(三)

#include "stdafx.h"
#include "math.h"

float getRootInteration()
{
float x0 = 1.5;
float x1 , b;
do
{
x1 = x0 - ( 2*x0*x0*x0 - 4*x0*x0 + 3*x0 -6 ) / ( 6* x0 * x0 - 8*x0 +3 );
b = x0 ;
x0 = x1;
} while (fabs(x0 - b) > 1e-5);
return b ;
}







知识补充:

网易公开课 泰勒级数 http://v.163.com/movie/2006/8/F/4/M6GLI5A07_M6GLMCDF4.html

复变函数http://baike.baidu.com/view/134430.htm