1. 程式人生 > >C程式設計案例(牛頓迭代法求高次方程的根)

C程式設計案例(牛頓迭代法求高次方程的根)

牛頓迭代法求方程的根

1. 牛頓迭代法的幾何解釋

在這裡插入圖片描述

  • 註解: r r f ( x )
    = 0 f(x)=0
    的根,選取 x 0 x_0 作為 r r 的初始近似值,過點 ( x 0 ,
    f ( x 0 ) ) (x_0,f(x_0))
    做曲線 y = f ( x ) y=f(x) 的切線 L L L : y = f ( x 0 ) + f ( x 0 ) ( x x 0 ) L:y=f(x_0)+f'(x_0)(x-x_0) ,則 L L x x 軸交點的橫座標 x 1 = x 0 f ( x 0 ) f ( x 0 ) x_1=x_0-\frac{f(x_0)}{f'(x_0)} ,稱 x 1 x_1 r r 的一次近似值。過點 ( x 1 , f ( x 1 ) ) (x_1,f(x_1)) 做曲線 y = f ( x ) y=f(x) 的切線,並求該切線與 x x 軸交點的橫座標 x 2 = x 1 f ( x 1 ) f ( x 1 ) x_2=x_1-\frac{f(x_1)}{f'(x_1)} ,稱 x 2 x_2 r r 的二次近似值。重複以上過程,得 r r 的近似值序列,其中, x x n+1 = x n f ( x n ) f ( x n ) =x_n-\frac{f(x_n)}{f'(x_n)} 稱為 r r n + 1 n+1 次近似值,上式稱為牛頓迭代公式
    以下是部分圖片(本人選自百度圖片),幫助理解:
    在這裡插入圖片描述
    在這裡插入圖片描述

2. 案例

題目:用牛頓迭代法求根。方程為 a x 3 + b x 2 + c x + d = 0 ax^3+bx^2+cx+d=0 ,係數 a b c d a,b,c,d 的值依次為 1,2,3,4,由主函式輸入。求 x x 在 1 附近的一個實根。求出根後由主函式輸出。

3. 案例分析

牛頓迭代公式為: x x n+1 = x n f ( x n ) f ( x n ) =x_n-\frac{f(x_n)}{f'(x_n)}
其中, x 0 x_0 是上一次求出的近似根,在開始是根據題設 x 0 = 1 x_0=1 (題目希望求x在1附近的一個實根,因此第一次的近似值可以設定為1)。 f ( x ) = x 3 + 2 x 2 + 3 x + 4 f(x)=x^3+2x^2+3x+4 f ( x ) f'(x) f ( x ) f(x) 的導數,所以 f ( x ) = 3 x 2 + 6 x + 3 f'(x)=3x^2+6x+3
第一次迭代, x = 1 f ( 1 ) f ( 1 ) x=1-\frac{f(1)}{f'(1)}