二分法求三次方程式根

程式基本功能說明

本程式自動尋找一元三次方程式 f(x) = a x^3 + b x^2 + c x + d = 0 三個根 (root) 的近似解。

簡易運算方法說明:

不論 a, b, c, d 為何, 此方程式一定至少有一個實數根, 如果先找到這個實根的話, 三次方程式可以降為二次方程式, 並利用公式解出剩下的兩個根。

尋找第一個實數根的時候, 通常可以用測試的方法先確定根的位置, 例如:若是 f(0) > 0 且 f(100) < 0 則可能有一個或是三個根在 0 到 100 這個區間之中, 利用二分法檢查 0 到 50 以及 50 到 100 之間哪一個區間有奇數個根, 一直繼續下去直到小數點後第六位為止, 由於本程式主要希望你練習

  1. 不同型態的浮點表示法
  2. 迴圈基本用法
  3. 條件測試敘述
  4. 函式

我們這種方法假設 10^(-6) 長度區間中只有一個根, 並沒有考慮效率及適當的精確度, 可以說是一種"暴力"的解根法, 另外, 如果不在 0 到 100 之間, 可以嘗試 0 到 -100 之間, 如果還不在的話可以試試 0 到 1000 之間, 以此類推。

找出一個根 r 以後再運用長除法將三次式降為二次式, 亦即

再利用解二次方程式的公式算出二次式的兩個根。

注意:本程式有可能用到 math.h 中的 fabs() 函式來求絕對值, 及 sqrt() 函式來求取實數的平方根。

範例執行程式

程式設計課程 首頁
by Pei-yih Ting
E-mail: pyting@cs.ntou.edu.tw