牛頓迭代法在求解三次方程上的應用

2021-04-14 00:15:04 字數 904 閱讀 6480

牛頓迭代法是牛頓在17世紀提出的一種求解方程f(x)=0.多數方程不存在求根公式,從而求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。 

設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的近似值序列,其中xn+1=xn-f(xn)/f'(xn),稱為r的n+1次近似值。上式稱為牛頓迭代公式。

/*

用牛頓迭代法求下面方程

x*x*x-5*x*x+16*x-80=0的實根的過程是:

1.你想在誰附近求解,這個範圍或者這個數值大多是題目已經給定了的(本例是根據輸入的數值來計算的)

2.令f(x)=x*x*x-5*x*x+16*x-80

3.x1=x

4.求f(x1)

5.對f(x)求導,得到f1(x),求f1(x1)

6.調整x,使x=x1-f(x1)/f1(x1)  

7.符合條件x-x1>1e-5,轉到第3步

8.不符合條件x-x1>1e-5,則x1就是我們要求的實根

*/#include

#include

//y=((x-5)*x+16)*x-80

float f(float x)

float f1(float x)

void main()

while (fabs(x-x1)>=1e-5);

printf("a root is %f/n",x1);

}

牛頓迭代法解一元三次方程

有形如 ax 3 bx 2 cx 1 dx 0 0ax3 bx2 cx1 dx0 0 這樣的乙個一元三次方程。給出該方程中各項的係數 a,b,c,da,b,c,d均為實數 並約定該方程存在三個不同實根 根的範圍在 100 100至100100之間 且根與根之差的絕對值 ge 1 1。要求由小到大依次...

P1024 一元三次方程求解 牛頓迭代法

題目描述 有形如 ax 3 bx 2 cx 1 dx 0 0 這樣的乙個一元三次方程。給出該方程中各項的係數 a,b,c,d 均為實數 並約定該方程存在三個不同實根 根的範圍在 100 至 100 之間 且根與根之差的絕對值 ge 1 要求由小到大依次在同一行輸出這三個實根 根與根之間留有空格 並精...

3 牛頓迭代法求解方程的根

引題 用牛頓迭代法求下列方程在值等於x附近的根 2x3 4x2 3x 6 02 x3 4 x2 3 x 6 0輸入 輸入x。輸出 方程在值等於x附近的根,佔1行。輸入示例 1.5 輸出例項 2 1.牛頓迭代公式推導 設多項式f x f x 設r是f x f x 的根。選取x0x0 作為r的初始近似值...