2026a
# roots
多项式根
函数库: TyMath
# 语法
r = roots(p)
# 说明
r = roots(p) 以列向量的形式返回 p 中的系数表示的多项式的根。输入 p 是一个包含 n+1 多项式系数的向量,以
roots 函数对
# 示例
二次多项式的根
对方程
创建一个向量,用它来代表多项式,然后计算多项式的根。
using TyMath
p = [3,-2,-4]
r = roots(p)
r = 2-element Vector{Float64}:
1.5351837584879962
-0.8685170918213299
四次多项式的根
对方程
创建一个向量,用它来代表多项式,然后计算多项式的根。
using TyMath
p = [1,0,0,0,-1]
r = roots(p)
r = 4-element Vector{ComplexF64}:
-1.0000000000000004 + 0.0im
8.326672684688674e-17 + 0.9999999999999996im
8.326672684688674e-17 - 0.9999999999999996im
0.9999999999999999 + 0.0im
# 输入参数
p - 多项式系数向量
多项式系数,指定为向量。例如,向量 [1,0,1] 表示多项式
数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16
复数支持: 是
# 提示
- 使用 poly 函数从其根 p = poly(r) 获取多项式。poly 函数是 roots 函数的逆函数;
- 使用 fzero 函数求非线性方程的根。roots 函数仅适用于多项式,fzero 函数则更广泛适用于不同类型的方程。
# 算法
roots 函数将 p 视为一个具有 n+1 个元素的向量,代表 n×n 矩阵 A 的 n 次特征多项式。多项式的根通过计算伴随矩阵 A 的特征值得出。
A = diagm(-1 => ones(n-1))
A[1,:] = -p[2:n+1] ./ p[1]
r = eigen(A)
生成的结果是伴随矩阵 A 在舍入误差内的精确特征值。但是,这并不意味着它们是系数在 p 中的舍入误差界限内的多项式的精确根。