✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。
????个人主页:算法工程师的学习日志
分享一下通过多种不同的方法计算多项式的根。
- 数值根
- 使用代换法求根
- 特定区间内的根
- 符号根
数值根
roots
函数用于计算系数向量表示的单变量多项式的根。
例如,创建一个向量以表示多项式 x2−x−6,然后计算多项式的根。
按照惯例,MATLAB以列向量形式返回这些根。
poly
函数将这些根重新转换为多项式系数。对向量执行运算时,poly
和 roots
为反函数,因此 poly(roots(p))
返回 p
(取决于舍入误差、排序和缩放)。
对矩阵执行运算时,poly 函数会计算矩阵的特征多项式。特征多项式的根是矩阵的特征值。因此,roots(poly(A)) 和 eig(A) 返回相同的答案(取决于舍入误差、排序和缩放)。
使用代换法求根
通过使用代换法简化方程来对涉及三角函数的多项式方程求解。一个变量的生成多项式不再包含任何三角函数。
例如,计算θ用于对该方程进行求解的值
3cos2(θ)−sin(θ)+3=0.
利用 cos2(θ)=1−sin2(θ),完全以正弦函数的方式表示该方程:
−3sin2(θ)−sin(θ)+6=0.
利用代换法 x=sin(θ),将该方程表示为简单的多项式方程:
−3x2−x+6=0.
创建一个向量以表示多项式。
求多项式的根。
要撤消代换法,请使用 θ=sin−1(x)。asin
函数计算反正弦。
验证 theta
中的元素是否为θ中用来对原始方程求解的值(在舍入误差内)。
特定区间内的根
使用 fzero
函数求多项式在特定区间内的根。在其他使用情况下,如果要绘制多项式并想要知道特定根的值,则这种方法很适用。
例如,创建一个函数句柄以表示多项式 3x7+4x6+2x5+4x4+x3+5x2。
在区间 [−2,1]
从绘图中,多项式在 0
和另一个接近 -1.5
的位置各有一个简单的根。使用 fzero
计算并绘制接近 -1.5
的根。
符号根
如果你有 Symbolic Math Toolbox™,则还会提供以符号形式计算多项式的其他选项。一种方式是使用 solve
(Symbolic Math Toolbox)
另一种方式是使用 factor
(Symbolic Math Toolbox)