牛頓迭代法(ne
wton
′sme
thod
n ew
ton′
smet
ho
d)一般用於求函式的乙個零點。
牛頓迭代法三個步驟:
隨機 / 猜乙個
p p
值求x=
p' role="presentation">x=p
x=p時的切線,即求導數令p
= p
=切線零點,返回步驟
2 2
,重複若干次.即:x
n+1=
xn−f
(xn)
f′(x
n)' role="presentation">xn+
1=xn
−f(x
n)f′
(xn)
xn+1
=xn−
f(xn
)f′(
xn)重複得越多得到的根越精確,一般達到精度要求就可以停止.
例:求f(x
)=x3
−2x2
+x−1f(
x)=x
3−2x
2+x−
1的乙個零點
首先求出導數f′
(x)=
3x2−
4x+1f′
(x)=
3x2−
4x+1
.然後就開始牛頓迭代.
#include
#include
#define f(x) (x*x*x-2*x*x+x-1)
#define f1(x) (3*x*x-4*x+1)
int main()
printf("%f\n", x);
return
0;}
應用:只能求函式零點
應用除了求函式零點外,還可以求解:
a−−√
m a
m方法:設b=
a−−√
m b=a
m,則a
=bm a=b
m,轉換成求f(
b)=b
m−a f(b
)=bm
−a
的零點首先求導。f′
(b)=
mbm−
1 f′(
b)=m
bm−1
下面是求平方根的程式:
#include
#include
#define f(b) (b*b-a)
#define f1(b) (2*b)
double sqrt(double a)
return x;
}int main()
學習筆記 牛頓迭代法
假設我們有函式 f x x 在 x 0 處有 infty 階導數。我們知道 f x 0 的值 我們希望構造乙個多項式 g 使它盡可能逼近函式 f beging x xi 0 f x 0 frac x 0 x x 0 1 frac x 0 x x 0 2 frac x 0 x x 0 n xi 0 f...
牛頓迭代法
創新工廠的筆試題 不用庫函式sqrt 求乙個整型數n的開方,要求精度達到0.001即可。在這裡首先介紹一下牛頓迭代法 假設乙個方程為 f x 0 那麼假設其解為x0,則用泰勒級數展開之後可得 f x f x0 f x0 x x0 0 其中x為其近似解。根據上式推導出 x x0 f x0 f x0 這...
牛頓迭代法
目前接觸到的牛頓迭代法主要應用於兩個方面 1 方程求根問題 2 最優化問題。1 求解方程。並不是所有的方程都有求根公式,或者求根公式很複雜,導致求解困難。利用牛頓法,可以迭代求解。原理是利用泰勒公式,在x0處展開,且展開到一階,即f x f x0 x x0 f x0 求解方程f x 0,即f x0 ...