已知一个复系数的特征方程,我们规定其特征根为实数,那么求根的过程其实就是将该方程展开,分别列出其实部方程和虚部方程,然后依次求解。这里需要用到的MATLAB函数有:

expand(扩展表达式并简化函数输入)、 sym2poly(提取多项式系数)、 solve(求解方程)

代表性问题:针对二元机翼的动气弹问题。

运用Theodorsen方法求解二元机翼的颤振速度和颤振频率,在求解过程中我们会遇到一个复杂的行列式求解的问题,行列式如下:

其中M和L是气动力矩和气动力,注意是复数,可以查表得到,而X是我们要求解的根,且前提条件是它是实数,这就需要将这个特征方程展开,并且拆分为实部方程和虚部方程分别求解,手算太过于复杂,我们想到了用MATLAB代替铅笔进行数值计算。

查表得Lh, La, Mh, Ma的值分别为 0.5407-1.9293i,-3.1749-2.8305i,0.5,0.375-1.6667i,求解代码如下:

clc;
clear;
Lh=0.5407-1.9293i; La=-3.1749-2.8305i; Mh=0.5; Ma=0.375-1.6667i;  %气动力参数值
syms x xr xi %设置符号变量x及其实部和虚部
p=(5*(1-0.25*x)+Lh)*(5*0.5*(1-x)+(Ma-0.4*(La+Mh)+0.16*Lh))-(5*0.25+(Mh-0.4*Lh))*(5*0.25+(La-0.4*Lh)); %用f表示复系数行列式
ep=expand(p); %将行列式展开为标准多项式形式
xishu=sym2poly(ep); %提取行列式系数
shi=real(xishu); %提取实部
xu=imag(xishu); %提取虚部
eqn1= shi(1)*xr^2+shi(2)*xr+shi(3)==0; %列出实部方程
eqn2= xu(1)*xi+xu(2)*xi+xu(3)==0; %列出虚部方程
%我们知道列出的方程最高次数是2
s1=double(solve(eqn1,xr)); %求解实部方程对应的根
s2=double(solve(eqn2,xi)); %求解虚部方程对应的根
%solve求解得到的不是最终的数字,需要再用double简化一下
s1
s2

运行后得到的结果为:

由于虚部方程二次项系数为0,所以只得到一个根。

注意在用solve求解后需要再使用double命令化简一下结果,不然得到的结果是这样的:

对于更一般的复数方程求根问题,若方程的根是一个复数,那么求解过程就更简单了,列出方程后我们直接使用solve命令求解,而不需要再提取实部虚部系数分别列方程求解。

MATLAB求解复系数特征方程的实数根的方法相关推荐

  1. 求多项式浮点java思路,求多项式函数实数根的方法

    第29卷 第5期 Vol. 29No. 5昭通师范高等专科学校学报Journal of Zhaotong Teacher πs College 2007年10月Oct. 2007●数学 求多项式函数实 ...

  2. MATLAB求解非线性方程组(牛顿拉夫逊方法)

    文章目录 MATLAB求解非线性方程组(牛顿拉夫逊方法) Equation.m 函数 牛顿拉夫逊方法迭代求解 MATLAB求解非线性方程组(牛顿拉夫逊方法) Equation.m 函数 这个函数用来写 ...

  3. C#,码海拾贝(24)——求解“复系数方程组”的“全选主元高斯-约当消去法”之C#源代码

    using System; namespace Zhou.CSharp.Algorithm {     /// <summary>     /// 求解线性方程组的类 LEquations ...

  4. matlab ax=b求x,Matlab求解线性方程组Ax=b的几种常见方法Matlab求解线性方程组Ax=b的几种常见方法...

    例如方程组: 法1:左除法 >> A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4]; >> x=A\b x = 1.4818 -0.4606 0 ...

  5. 求解一元高次多项式方程的所有实数根的算法

    求解一元高次多项式方程的所有实数根的算法 一元高次多项式的形式可以表示为: f ( x ) = c 0 + c 1 x + c 2 x 2 + c 3 x 3 + . . . + c n x n = ...

  6. 一元三次方程高精度实数根(C语言)

    文章目录 一.问题描述 二.CCC代码 三.参考文献/资料 一.问题描述   已知一元三次方程ax3+bx2+cx+d=0(a≠0)ax^3 + bx^2 + cx+d = 0(a\neq0)ax3+ ...

  7. 线性规划问题的数学建模matlab,数学建模讲座之三——利用Matlab求解线性规划问题(linprog函数).ppt...

    数学建模讲座之三--利用Matlab求解线性规划问题(linprog函数) 利用Matlab求解线性规划问题 线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP ...

  8. matlab提取电压基波分量,基于复系数陷波滤波器锁相环的电网正序分量检测

    摘  要: 为满足在电网电压不平衡情况下的系统控制需求,需要快速而准确地检测出基波正负序分量的幅值和相位.采用无限脉冲响应(IIR)复杂系数陷波滤波器结合锁相环来提取基波分量中的正序分量,利用MATL ...

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

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

最新文章

  1. fastJson解析复杂对象时碰到的问题
  2. zoj 3386 Trick or Treat 三分 求最大值的 最小值
  3. 编程语言的发展趋势及未来方向(1):历史回顾及趋势概述
  4. 分布式下的session问题
  5. 获取Favicon.ico网站图标接口api源码
  6. 性能测试工具Gatling
  7. ES8新特性_ES8中对象方法的扩展---JavaScript_ECMAScript_ES6-ES11新特性工作笔记052
  8. RIA 应用程序模式
  9. The pricess diaries
  10. 面试非重复数字的全排列
  11. 数字逻辑电路——反演规则与对偶规则
  12. 公司给你调岗降薪,逼你主动辞职如何应对?
  13. 保险怎么买?有哪些销售渠道?各自的优缺点是什么?
  14. qsort 用法详解
  15. Java面试--堆和栈的概念和区别
  16. Web前端,CSS中的浮动、清除浮动
  17. 传奇版本添加npc修改增加npc方法以及配置参数教程
  18. C语⾔中关于float、double精度及数值范围
  19. oracle创建表的sql语句
  20. Ubuntu中安装Navicat图解教程

热门文章

  1. 高数复习(2)--方向导数与梯度的理解 附根据梯度求轨迹的基本模型
  2. 为什么要做业务全场景的梳理?
  3. 安装JDK8时错误1335的解决
  4. web百度离线地图开发(详细教程)2019
  5. ktor启动报错:Module function cannot be found for the fully qualified name 'ApplicationKt.module'
  6. NETPLIER: Probabilistic Network Protocol Reverse Engineering from Message Traces代码复现记录
  7. 实战PyQt5: 143-QChart图表之堆积柱状图
  8. HiveConf of name hive.metastore.local does not exis问题
  9. 2018前端校招总结
  10. 网页flv视频播放代码