前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matlab 多项式的根求解

Matlab 多项式的根求解

作者头像
用户9925864
发布2022-07-27 08:36:06
8170
发布2022-07-27 08:36:06
举报
文章被收录于专栏:算法工程师的学习日志

分享一下通过多种不同的方法计算多项式的根。

  • 数值根
  • 使用代换法求根
  • 特定区间内的根
  • 符号根

数值根

roots 函数用于计算系数向量表示的单变量多项式的根。

例如,创建一个向量以表示多项式 x2−x−6,然后计算多项式的根。

代码语言:javascript
复制
p = [1 -1 -6];
r = roots(p)
r =

     3
    -2

按照惯例,MATLAB以列向量形式返回这些根。

poly 函数将这些根重新转换为多项式系数。对向量执行运算时,polyroots 为反函数,因此 poly(roots(p)) 返回 p(取决于舍入误差、排序和缩放)。

代码语言:javascript
复制
p2 = poly(r)
p2 =

     1    -1    -6

对矩阵执行运算时,poly 函数会计算矩阵的特征多项式。特征多项式的根是矩阵的特征值。因此,roots(poly(A)) 和 eig(A) 返回相同的答案(取决于舍入误差、排序和缩放)。

使用代换法求根

通过使用代换法简化方程来对涉及三角函数的多项式方程求解。一个变量的生成多项式不再包含任何三角函数。

例如,计算θ用于对该方程进行求解的值

3cos2(θ)−sin(θ)+3=0.

利用 cos2(θ)=1−sin2(θ),完全以正弦函数的方式表示该方程:

−3sin2(θ)−sin(θ)+6=0.

利用代换法 x=sin(θ),将该方程表示为简单的多项式方程:

−3x2−x+6=0.

创建一个向量以表示多项式。

代码语言:javascript
复制
p = [-3 -1 6];

求多项式的根。

代码语言:javascript
复制
r = roots(p)
r = 2×1

   -1.5907
    1.2573

要撤消代换法,请使用 θ=sin−1(x)。asin 函数计算反正弦。

代码语言:javascript
复制
theta = asin(r)
theta = 2×1 complex

  -1.5708 + 1.0395i
   1.5708 - 0.7028i

验证 theta 中的元素是否为θ中用来对原始方程求解的值(在舍入误差内)。

代码语言:javascript
复制
f = @(Z) 3*cos(Z).^2 - sin(Z) + 3;
f(theta)
ans = 2×1 complex
 1.0e-14 *

  -0.0888 + 0.0647i
   0.2665 + 0.0399i

特定区间内的根

使用 fzero 函数求多项式在特定区间内的根。在其他使用情况下,如果要绘制多项式并想要知道特定根的值,则这种方法很适用。

例如,创建一个函数句柄以表示多项式 3x7+4x6+2x5+4x4+x3+5x2。

代码语言:javascript
复制
p = @(x) 3*x.^7 + 4*x.^6 + 2*x.^5 + 4*x.^4 + x.^3 + 5*x.^2;

在区间 [−2,1] 内绘制该函数。

代码语言:javascript
复制
x = -2:0.1:1;
plot(x,p(x))
ylim([-100 50])
grid on
hold on

从绘图中,多项式在 0 和另一个接近 -1.5 的位置各有一个简单的根。使用 fzero 计算并绘制接近 -1.5 的根。

代码语言:javascript
复制
Z = fzero(p, -1.5)
Z = -1.6056
plot(Z,p(Z),'r*')

符号根

如果你有 Symbolic Math Toolbox™,则还会提供以符号形式计算多项式的其他选项。一种方式是使用 solve (Symbolic Math Toolbox) 函数。

代码语言:javascript
复制
syms x
s = solve(x^2-x-6)
s =
 
 -2
  3

另一种方式是使用 factor (Symbolic Math Toolbox) 函数计算多项式各项的因子。

代码语言:javascript
复制
F = factor(x^2-x-6)
F =
 
[ x + 2, x - 3]
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分享一下通过多种不同的方法计算多项式的根。
  • 数值根
  • 使用代换法求根
  • 特定区间内的根
  • 符号根
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档