跳转至

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
输出
请先写下预测,再运行。

用测试核对

用测试核对

测试检查初始区间必须只含一个根、区间持续嵌套、宽度按预期缩小。

适用范围

适用范围

该类型用于观察一个实根的逼近,不提供代数数之间的完整运算或一般相等判断。

关于“代数实根:隔离区间与二分”的实现,哪一种说法正确?