跳转至

05 · 代數實根:隔離區間與二分

代數實根:隔離區間與二分

以一個多項式和只含一個實根的有理區間表示代數實數,逐步縮小區間。

閱讀本章前

你已知道如何精確求值多項式,並用 Sturm 序列計算區間內的根數。

完成本章後,你可以
  • 用自己的話說明「代數實根:隔離區間與二分」中的數學定義
  • 指出定義在 Python 資料中的表示方式
  • 依據實際實作預測一段小型執行過程
數學定義

代數實數是某個非零整數或有理係數多項式的實根。這裡以多項式與恰好隔離一根的開區間指定一個根。

資料表示

`AlgebraicRoot` 保存多項式與有理端點,建立時驗證順序和根數;`RationalInterval` 保存每次收縮後的範圍。

Python 實作

`(p,(a,b))` → `AlgebraicRoot`; `Iₙ → Iₙ₊₁` → `_bisect`

與本章一起閱讀的實作與測試

peano/algebraic_root.py · tests/test_algebraic_root.py

數學定義

數學定義

代數實數是某個非零整數或有理係數多項式的實根。這裡以多項式與恰好隔離一根的開區間指定一個根。

資料表示

資料表示

AlgebraicRoot 保存多項式與有理端點,建立時驗證順序和根數;RationalInterval 保存每次收縮後的範圍。

Python 實作

Python 實作

_bisect 計算有理中點,再以根計數選擇仍含唯一根的一半;trace 重複此過程。

本課程使用的精確對應關係:

`(p,(a,b))` → `AlgebraicRoot`; `Iₙ → Iₙ₊₁` → `_bisect`

執行過程

執行過程

x²-2 的正根從 (1,2) 開始。每一步端點仍為有理數,區間彼此巢狀且寬度減半。

執行前預測

先算前三個中點,預測每次保留左半或右半,再與輸出比較。

實驗 · 代數實根:隔離區間與二分 尚未執行
⌘ / Ctrl + Enter
輸出
請先寫下預測,再執行。

用測試核對

用測試核對

測試確認初始區間必須只含一根、區間持續巢狀、寬度按預期縮小。

適用範圍

適用範圍

此型別用來觀察一個實根的逼近,不提供代數數之間的完整運算或一般相等判斷。

關於「代數實根:隔離區間與二分」的實作,哪一種說法正確?