MATLAB求解复系数特征方程的实数根的方法
已知一个复系数的特征方程,我们规定其特征根为实数,那么求根的过程其实就是将该方程展开,分别列出其实部方程和虚部方程,然后依次求解。这里需要用到的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求解复系数特征方程的实数根的方法相关推荐
- 求多项式浮点java思路,求多项式函数实数根的方法
第29卷 第5期 Vol. 29No. 5昭通师范高等专科学校学报Journal of Zhaotong Teacher πs College 2007年10月Oct. 2007●数学 求多项式函数实 ...
- MATLAB求解非线性方程组(牛顿拉夫逊方法)
文章目录 MATLAB求解非线性方程组(牛顿拉夫逊方法) Equation.m 函数 牛顿拉夫逊方法迭代求解 MATLAB求解非线性方程组(牛顿拉夫逊方法) Equation.m 函数 这个函数用来写 ...
- C#,码海拾贝(24)——求解“复系数方程组”的“全选主元高斯-约当消去法”之C#源代码
using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations ...
- 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 ...
- 求解一元高次多项式方程的所有实数根的算法
求解一元高次多项式方程的所有实数根的算法 一元高次多项式的形式可以表示为: f ( x ) = c 0 + c 1 x + c 2 x 2 + c 3 x 3 + . . . + c n x n = ...
- 一元三次方程高精度实数根(C语言)
文章目录 一.问题描述 二.CCC代码 三.参考文献/资料 一.问题描述 已知一元三次方程ax3+bx2+cx+d=0(a≠0)ax^3 + bx^2 + cx+d = 0(a\neq0)ax3+ ...
- 线性规划问题的数学建模matlab,数学建模讲座之三——利用Matlab求解线性规划问题(linprog函数).ppt...
数学建模讲座之三--利用Matlab求解线性规划问题(linprog函数) 利用Matlab求解线性规划问题 线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP ...
- matlab提取电压基波分量,基于复系数陷波滤波器锁相环的电网正序分量检测
摘 要: 为满足在电网电压不平衡情况下的系统控制需求,需要快速而准确地检测出基波正负序分量的幅值和相位.采用无限脉冲响应(IIR)复杂系数陷波滤波器结合锁相环来提取基波分量中的正序分量,利用MATL ...
- matlab根据根求多项式,matlab求解多项式的根
因此牛顿法也称切线法,是非线性方程求根方法中收敛最快的方 法. 2. matlab 中方程求解的基本命令 roots(p):求多项式方程的根,其中 p 是多项式系数按降幂排列所形成的向量. solve ...
最新文章
- fastJson解析复杂对象时碰到的问题
- zoj 3386 Trick or Treat 三分 求最大值的 最小值
- 编程语言的发展趋势及未来方向(1):历史回顾及趋势概述
- 分布式下的session问题
- 获取Favicon.ico网站图标接口api源码
- 性能测试工具Gatling
- ES8新特性_ES8中对象方法的扩展---JavaScript_ECMAScript_ES6-ES11新特性工作笔记052
- RIA 应用程序模式
- The pricess diaries
- 面试非重复数字的全排列
- 数字逻辑电路——反演规则与对偶规则
- 公司给你调岗降薪,逼你主动辞职如何应对?
- 保险怎么买?有哪些销售渠道?各自的优缺点是什么?
- qsort 用法详解
- Java面试--堆和栈的概念和区别
- Web前端,CSS中的浮动、清除浮动
- 传奇版本添加npc修改增加npc方法以及配置参数教程
- C语⾔中关于float、double精度及数值范围
- oracle创建表的sql语句
- Ubuntu中安装Navicat图解教程
热门文章
- 高数复习(2)--方向导数与梯度的理解 附根据梯度求轨迹的基本模型
- 为什么要做业务全场景的梳理?
- 安装JDK8时错误1335的解决
- web百度离线地图开发(详细教程)2019
- ktor启动报错:Module function cannot be found for the fully qualified name 'ApplicationKt.module'
- NETPLIER: Probabilistic Network Protocol Reverse Engineering from Message Traces代码复现记录
- 实战PyQt5: 143-QChart图表之堆积柱状图
- HiveConf of name hive.metastore.local does not exis问题
- 2018前端校招总结
- 网页flv视频播放代码