Matlab 多项式的根求解

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

  • 数值根

  • 使用代换法求根

  • 特定区间内的根

  • 符号根

数值根

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

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

p = [1 -1 -6];r = roots(p)r =
     3    -2

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

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

​​​​​​​

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.

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

p = [-3 -1 6];

求多项式的根。

​​​​​​​

r = roots(p)r = 2×1
   -1.5907    1.2573

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

​​​​​​​

theta = asin(r)theta = 2×1 complex
  -1.5708 + 1.0395i   1.5708 - 0.7028i

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

​​​​​​​

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。

p = @(x) 3*x.^7 + 4*x.^6 + 2*x.^5 + 4*x.^4 + x.^3 + 5*x.^2;

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

​​​​​​​

x = -2:0.1:1;plot(x,p(x))ylim([-100 50])grid onhold on

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

​​​​​​​

Z = fzero(p, -1.5)Z = -1.6056plot(Z,p(Z),'r*')

符号根

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

​​​​​​​

syms xs = solve(x^2-x-6)s =  -2  3

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

F = factor(x^2-x-6)F = [ x + 2, x - 3]

2021-03-01 Matlab 多项式的根求解相关推荐

  1. 【一、建站综述及步骤简介】2021最详细wordpress博客建站教程(2021.03.01更新)

    通过本wordpress博客建站教程系列系列文章,你可以不懂网页代码条件下,搭建一个谷歌insight测评90分的个人博客,最低费用在每年80块.本人搭建博客小站点击下面链接即可进入:         ...

  2. linux3.0 usb键盘驱动,USBOS V3.0.2021.03.01

    本帖最后由 chiannet 于 2021-3-21 20:45 编辑 第一部分 USBOS v3 增强版 ISO版与UD版合体,总体积1.62GB--3.0GB(视是否拓展)! USBOS V3是计 ...

  3. matlab多项式计算(求根、由根创建、导数、积分)

    1 matlab多项式求根 举例:求解多项式3x4-10x3+15x+1000的根 Matlab代码 %% 多项式求解 p = [3 -10 0 15 1000]; r = roots(p); 运行结 ...

  4. matlab根据根求多项式,matlab求解多项式的根

    因此牛顿法也称切线法,是非线性方程求根方法中收敛最快的方 法. 2. matlab 中方程求解的基本命令 roots(p):求多项式方程的根,其中 p 是多项式系数按降幂排列所形成的向量. solve ...

  5. matlab多项式加法运算,matlab多项式运算与代数方程求解解析.ppt

    * 多项式运算与代数方程求解 数学软件 Matlab Matlab基础及应用 * 多项式转化为符号表达式:poly2sym 四则运算:conv.deconv 导数与积分:ployder.polyint ...

  6. 方程组在原点附近解matlab,Matlab计算题:求解下列非线性方程组在原点附近的根: 9x^2 + 36y^2 + 4z^2 =36 X^2 -2y^2- 20z =0 16x –...

    Matlab计算题:求解下列非线性方程组在原点附近的根: 9x^2 + 36y^2 + 4z^2 =36 X^2 -2y^2- 20z =0 16x – 关注:290  答案:2  mip版 解决时间 ...

  7. matlab求多项式的实数根_matlab中怎么求多项式的根

    2017-10-09 回答 用matlab解方程的三个实例 1.对于多项式p(x)=x3-6x2-72x-27,求多项式p(x)=0的根,可用多项式求根函数roots(p),其中p为多项式系数向量,即 ...

  8. matlab特征方程的根,MATLAB 求解特征方程的根轨迹图稳定性分析

    原文:http://tecdat.cn/?p=3871 根轨迹分析在下文中,我们提供了用于根轨迹分析的强大MATLAB命令的简要描述.读者可能想知道为什么当强大的MATLAB命令可用时,教师强调学习手 ...

  9. matlab 多项式表达,MATLAB自学笔记(十七):多项式及其函数

    终于结束了关于MATLAB的基础知识学习部分,开始了对数据的分析 1.多项式的表达与创建 MATLAB中用一维行向量来表示多项式,将多项式的系数按照降幂次序存放在向量中. 请注意上面一句话,这将是MA ...

最新文章

  1. 基于MATLAB的TDOA算法的仿真
  2. 云原生/低代码/数据科学/计算等方向内容整理志愿者招募了!
  3. Linux用户配置文件(第二版)
  4. 人行强拒规则拒绝评分人群
  5. NIOS II 常见问题总结FAQ - xiangyuqxq的专栏 - CSDN博客
  6. localForage Web 离线存储
  7. fig, ax = plt.subplots(figsize = (a, b))解析 与 plt.subplot()函数解析
  8. Linux之vim常用扩展操作
  9. 10g添加用户 oracle_oracle10g下新建/删除用户
  10. 使用Source Insight查看Android Framework 源码
  11. 【MySQL】——数据库基础入门知识
  12. myeclipse以及tomcat乱码解决
  13. 【面试宝典】HR最喜欢的程序员简历模板,最佳建议篇
  14. 2018年计算机网络考研真题
  15. thing.js入门学习
  16. arm模拟器手机版_基于ARM的模拟器
  17. html表格内容自动换行符,html表格内容自动换行
  18. 发力1小时到家服务,山姆与京东到家共建前置仓获10倍坪效、60%月复购率...
  19. PPT 不支持打开显示 webp 图片
  20. UE4 Material 101学习笔记——23-29 水涟漪/水深/折射反射/Gerstner海浪/波光焦散/泡沫/FlowMap

热门文章

  1. tableau实战系列(八)-用数据桶实现图表的固定轴距
  2. 深度学习100例 - 常见错误 及 处理办法
  3. 时序数据-LSTM模型-实现用电量预测
  4. Youtube推荐系统是如何挖掘用户内心另一面的
  5. 如何用ipad制作精美的视频,并发布到视频网站
  6. 中小型研发团队架构实践:微服务架构
  7. kettle、Oozie、camus、gobblin
  8. Java 线程池框架核心代码分析--转
  9. spring aop源码实现分析
  10. 【采用】反欺诈之四大杀器