標籤:

(精算師考試必會)如何利用計算器求解高次方程

利用普通計算器求解高次方程的解(轉自人人)

原文鏈接:blog.renren.com/share/2

摘要:介紹了一種利用普通計算器求解高次方程解的方法,具有很強實用性。

關鍵詞:普通計算器,一元三次方程,牛頓迭代法

0 引言

一元二次方程我們在初中就知道怎麼解了,一元三次方程也有解析解,但太複雜,沒多少人能記住,除了少部分通過觀察可以進行因式分解求解,大部分都沒那麼簡單能一眼猜出來。

遇到這些高次方程,一般用matlab求下,很簡單,但其最大的缺點是要用電腦。

其實只要我們手上有下圖所示「計算器」就可以解一般的三次方程,甚至是更複雜的高次方程。這裡所謂的「普通計算器」是指一般學生使用的卡西歐計算器等,如下圖,普及率應該很高。

以求一元三次方程 2x^3-7x^2+x-15=0 為例,

1 原理

原理為迭代法,「數值分析」的知識就強大在這裡。

對於一般的方程:f(x)=0

求 x0 使得 f(x0)=0 。

轉化 f(x) 的形式,f(x)=x-G(x) ,x=G(x)

使用牛頓迭代法,G(x) 的形式為:G(x)=x - f(x)/f(x) ,(牛頓!),帶入可見 f(x)=0 自然成立。

我們給 G(x) 中的 x 一個初值,計算得到的值可以再作為 x 帶入G(x) 計算,直到 x 穩定在某一個值,此時 G(x0)=x0 ,這個穩定的值 x0 就是方程的一個根,(不動點)。

2、原理完了,就是實際的操作。

圖示計算器內置有10個變數,A-F,X,Y,M,以及Ans,可以分別賦值並帶入表達式計算。

其中,Ans是一個很特別的變數,它是每次計算的結果,"Answer"。我們要用的就是它!

f(x) 的導數,f(x)=6x^2-14x+1

在計算器中輸入,

Ans-(2Ans^3-7Ans^2+Ans-15)/(6Ans^2-14Ans+1)

2Ans表示2*Ans,乘號可省略,「/」 是除號。Ans鍵就在計算器右下角,等號旁邊的那個。

好戲開始了。

輸入完畢,按等號鍵「=」,出現一個值,什麼都別動,再按一次「=」,出現的值變了吧。

繼續按個7、8次。前幾個值會相差很大,到最後,結果會逐漸穩定,直到穩定在

3.871283138

接下來,你再按個幾萬次,它都不會變了。哈哈~~,這個就是方程的一個解。

知道了一個根,其他兩個通過因式分解就很容易求解,

展開上式,得到 b=0.742, c=3.875

然後就是解一元二次方程了,得到兩個虛根,

-0.186 + 1.382i

-0.186 - 1.382i

至此,上面一元三次方程的三個根都解出來了。

在Matlab中,只要輸入一行代碼就搞定,roots([2,-7,1,-15]) 。

Matlab的結果(準確解):

3.8713

-0.1856 + 1.3794i

-0.1856 - 1.3794i

是不是很有意思?呵呵~

3、再介紹下給 Ans 賦初值

不同的初值迭代速度不同。有的初值甚至不收斂,也就是怎麼按等號,結果也不會穩定。牛頓迭代法的收斂速度是很快的(二階收斂),所以一般按個10次,結果還沒穩定,可以換個初值試試。而且不同初值可能收斂到不同的結果,那更好,只要收斂,那麼所得結果就是一個根。

言歸正傳,給Ans變數賦初值,在計算器中隨便輸入個數值,例如10,或0,或-5等,按一次等號「=」,Ans就被賦予以上你輸入的值了。接著輸入那一串的式子,Ans……。操作類似。

也可以換不同的初值試試,而且不需要再次輸入那一串長式子,圖示的計算器有存儲功能,這個用過的人應該都知道。給 Ans 換個值,按「向上鍵」調出之前的式子,接著按「=」號就可以了,很簡單吧。

更複雜的高次方程也可借鑒上面的方法試試,如果確定有實根,並且知道解的範圍,不難得到結果,只是找到所有解包括虛根就有些困難。

4 結論

迭代法很強大,更多知識請參考工科研究生必修課「數值分析」。 PS:牛頓不是一般人


推薦閱讀:

中國最難考也是最值錢的10大證書

TAG:精算師 |