引題:用牛頓迭代法求下列方程在值等於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的初始近似值。
過點(x0,
f(x0
))(x
0,f
(x0
))做曲線y=f
(x)y
=f(x
)的切線l。得l:y=f
(x0)
+f′(
x0)(
x−x0
)y=f
(x0
)+f′
(x0
)(x−
x0)
則l與x軸交點的橫座標為 x1=
x0−f
(x0)
f′(x
0)x1
=x0
−f′
(x0
)f(x
0)
,那麼稱x1x
1為r的一次近似值。
過點(x1,
f(x1
))(x
1,f
(x1
))做曲線y=f
(x)y
=f(x
)的切線,並求該切線與x軸交點的橫座標x2=
x1−f
(x1)
f′(x
1)x2
=x1
−f′
(x1
)f(x
1)
,稱x2x2
為r的二次近似值。
重複以上過程,得r的近似值序列。
其中,xn+
1=xn
−f(x
n)f′
(xn)
xn+1
=xn
−f′
(xn
)f(x
n)
稱為r的n+1次近似值。
所以,xn+
1=xn
−f(x
n)f′
(xn)
xn+1
=xn
−f′
(xn
)f(x
n)
即為牛頓迭代公式。
2. 牛頓迭代公式核心思想
核心思想:使用泰勒級數的線性項近似計算函式f(x
)=0f
(x)=
0的根。把f(x
)f(x
)在點x0x
0的某領域內展開成泰勒級數,取其線性部分(即泰勒展開的前兩項),並令其等於0。
泰勒級數展開式:f(
x)=f
(x0)
+f′(
x0)(
x−x0
)+f′
′(x0
)(x−
x0)2
2!+…
+f(n
)(x0
)(x−
x0)n
n!+r
n(x)
f(x)
=f(x
0)+
f′(x
0)(
x−x0
)+2
!f′′
(x0
)(x−
x0)
2+…
+n!f
(n)(
x0)
(x−x
0)n
+rn
(x)
線性部分:f(
x)=f
(x0)
+f′(
x0)(
x−x0
)f(x
)=f(
x0)
+f′(
x0)
(x−x
0)令其為0,並以此作為非線性方程f(x
)=0f
(x)=
0的近似方程,即切線方程,得到公式:x=x
0−f(
x)f′
(x)x
=x0
−f′(
x)f(
x)將其推廣,即可以得到牛頓迭代公式:xn+
1=xn
−f(x
n)f′
(xn)
xn+1
=xn
−f′
(xn
)f(x
n)
#include
#include
using
namespace std;
doublef(
double x)
//函式
doublef1(
double x)
//導函式
intmain()
while(f
(x)>
1e-5||f
(x)<-(
1e+5))
;//控制精度,逼近處理
cout << x << endl;
}
使用「牛頓迭代法」求解方程
使用牛頓迭代法求解方程 儘管通過因式分解和利用求根公式可以很方便的得出多項式方程的根,但大多數時候這個多項式的次數都很高,計算將變得非常複雜,因此,我們必須轉向一些近似解法。牛頓迭代法是其中最好的方法之一。從根本上說,牛頓迭代法通過一系列的迭代操作使得到的結果不斷逼近方程的實根。首先,要選擇乙個初始...
計算方法 迭代法 牛頓法求解方程組
迭代法 給定乙個 方程 f x 0 可以用多種方式來構造它的等價方程 x p x 取定根的乙個近似值 x0,構造序列 xk 1 p xk k 0,1 2 迭代法演算法 1.給定初始值 x0 和精度要求 e 以及最大迴圈次數 k 2.計算 xk 1 p xk 3.xk 1 xk e 如果成立則說明達到...
牛頓迭代法求解
牛頓迭代法又稱為牛頓 拉弗森方法,是牛頓在17世紀提出的一種在實數和複數域上近似求解方程的方法。牛頓迭代法的操作簡單來說就是通過不斷取切線,然後通過切線再不斷逼近相應的解,廢話不多說,我們來看例子。例如如下曲線 y x 2 1 我們在其上面任取一點,不妨取點 a 2,3 以該點做切線,切線方程為 y...