04 · 多项式:系数序列与 Sturm 序列
多项式:系数序列与 Sturm 序列¶
从有限系数序列构造多项式,再用精确有理数运算研究区间内的实根数。
阅读本章前
你已经能把有理数运算追溯到整数和自然数的定义。
完成本章后,你可以
- 用自己的话说明“多项式:系数序列与 Sturm 序列”中的数学定义
- 指出定义在 Python 数据中的表示方式
- 根据实际实现预测一段小规模执行过程
数学定义
多项式由 `(a₀,a₁,…)` 表示,其中 `aᵢ` 是 `xⁱ` 的系数。Sturm 定理用符号变化数之差给出区间内不同实根的个数。
数据表示
`Polynomial` 保存从常数项开始的系数元组,并删除末尾的零;零多项式因此有唯一表示。
Python 实现
`(a₀,a₁,…)` → `Polynomial`; `#roots` → `sturm_sequence`
与本章一起阅读的实现和测试
数学定义
数学定义¶
多项式由 (a₀,a₁,…) 表示,其中 aᵢ 是 xⁱ 的系数。Sturm 定理用符号变化数之差给出区间内不同实根的个数。
数据表示
数据表示¶
Polynomial 保存从常数项开始的系数元组,并删除末尾的零;零多项式因此有唯一表示。
Python 实现
Python 实现¶
evaluate 按系数求值;sturm_sequence 反复取带负号的余式;count_real_roots 比较区间两端的符号变化。
本课程使用的精确对应关系:
执行过程
执行过程¶
对 x²-2 在 1 和 2 处求值,会得到一负一正,为下一章的隔离区间提供依据。
运行前预测
在运行前判断两个端点的符号,并说明这是否足以证明区间里恰有一个根。
实验 · 多项式:系数序列与 Sturm 序列
尚未运行
⌘ / Ctrl + Enter
输出
请先写下预测,再运行。
用测试核对
用测试核对¶
测试检查系数规范化、求值、除法和已知多项式的根数。恰有一个根要由 Sturm 计数确认,而非只看符号。
适用范围
适用范围¶
这里只处理有理系数的一元多项式;重根和端点根需要实现中的明确约定。