二分法求一實數的三次方實根

程式基本功能說明

本程式自動尋找一實數的三次方實根, 例如:15.625 的三次方實根是 2.5。

簡易運算方法說明:

一個實數 y 一定有一個三次方實數根 x, 滿足 x^3 = y 這樣子的數學等式, 當然 x^3 - y = 0 這個方程式應該有三個根, 稍微證明一下你可以知道在 y 不等於 0 的情況下, 實數根之外的兩個根是共軛虛數。

在尋找這個實數根的時候, 我們可以用測試的方法先確定根在實數軸上的區間, 例如:任選一個實數 a 若是 a^3 < y, 則可以測試 a + 1000 看看 (a+1000)^3 是否還是比 y 小, 若是的話再測試 a + 2000 看看, 或是把區間放大一點, 看看 a + 10000 的三次方如何, 直到找到一數 b 其三次方比 y 值大為止, 此時可以利用二分法檢查 a 到 (a+b)/2 以及 (a+b)/2 到 b 之間看看 x 應該在哪一個區間內, 一直繼續下去直到區間的長度小於 10^(-6) 為止, 由於本程式主要希望你練習

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

這種方法並沒有考慮效率及適當的精確度, 可以說是一種"暴力"的解根法, 此外, 如果一開始時 a^3 > y, 那麼必須朝向 a-100, a-1000 的方向去尋找 b 值, 以此類推。

注意:本程式有可能用到 math.h 中的 fabs() 函式來求浮點數的絕對值。

範例執行程式

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