Title

基于matlab的含时变参数的常微分方程组求解

1761次浏览

问题描述

本人正在做一套新的控制算法,由于仿真结果和预期存在一定误差,因此想通过直接求解含时变参数的常微分方程组来验证控制器设计的正确性,并查明分析其余各种因素对整个仿真结果的影响,求各位大神指导如何基于matlab求解器求解含时变参数的常微分方程组,这个需要自己编程求解数值解还是matlab自身有接口工具去求解?

头像

张海涛·80.00

2016-11-29 15:06:55提问

请您登录后进行评论!

分数   时间  

全部答案 7

0
已采纳

已采纳

用matlab的m语言编程,结合命令dsolve,通过多次求解常微分方程得到自己想要的结果。至于你的结果和时变参数的关系,可以求出所有的数值解以后,通过画图plot得到大致规律。

比如:

for t=0:0.1:10

   得出时变参数a1(t);

   dsolve('微分方程');   //这个就相当于常微分方程了

end

评论 (0)条评论
头像555

  十月天·80.00

2017-01-20 16:25:28回答

0
已采纳

已采纳

1、MATLAB有两种解微分方程(组)的方法:一种是用matlab的m语言编程,相关的命令是dsolve;另一种是通过simulink搭建模型,算出数值解。

2、利用dsolve命令是可以得到带参数的微分方程的解析解的(运行 doc dsolve 命令即可看到),变参数的道理也类似,只不过你要把变化的参数用字母或者矩阵代替,根据参数的初始值进行迭代求解。

3、同2中的迭代思路差不多,这种方法结合了两种方法的优点,就是采用m函数或者S函数编写出微分方程表达式,根据参数的初始值进行迭代求解也可以求出来。

仅供参考!

评论 (0)条评论
头像555

  滴答·110.00

2016-12-29 14:01:58回答

1
已采纳

已采纳

我做个这方面的,一般方程组比较小的时候,可以采用dsolve编程来求解,但当方程组维数非常大的时候,我们可以采用数值分析里面的方法,先求出雅克比矩阵,据我的经验,这步最关键,最好用数值方法求解雅克比矩阵,速度非常快,还有一个注意的地方就是利用数值方法求解方程组,初值的选取比较重要,初值选好了,能迭代几次就得到结果,选的不好,可能出现空解,而且一般的方程可能有多组解,初值选的好,得到的解一般就是我们想要的解,至于这个初值的选取,因为一般的系统,我们根据电路参数,可以求出一些未知变量的大约值。

评论 (0)条评论
头像555

  MMC·30.00

2016-12-18 12:43:34回答

1
已采纳

已采纳

谈谈我的观点,就我所知控制器设计时其实有很大的稳定范围的,因为实际的系统中的参数应该存在不小的波动,如果你的控制器的设计带宽特别窄可能实际中无法应用,所以常规我们设计的结果应该都是一个可用解,而无法证明其为最优解,就以PI理论来说,PI实际上实在一个很大的范围内稳定的,都可以实现结果无静差。

含时变参数的常微分方程,我之前的做法是把时变的范围确定,然后细分,求出每一种情况下的解最后再形成总的解。

评论 (0)条评论
头像555

  李宁·170.00

2016-12-12 17:58:27回答

1
已采纳

已采纳

没有看到具体的问题,通过你的描述,我想到的是MATLAB中s-function。即通过simulink搭建你的模型,然后对时变参数控制模块编写相应的s-function的m文件进行验证你的的控制器设计的正确性。

评论 (0)条评论
头像555

  Reeds1008·0.00

2016-12-07 15:03:52回答

3
已采纳

已采纳

说一下我的意见,仅供参考啊!

MATLAB有两种解微分方程(组)的方法:一种是用matlab的m语言编程,相关的命令是dsolve;另一种是通过simulink搭建模型,算出数值解。

利用dsolve命令是可以得到带参数的微分方程的解析解的(运行 doc dsolve 命令即可看到),变参数的没有试过。

simulink搭建模型求解,很简单,不再赘述。如果想比较参数的影响,可以把simulink的数据保存下来,绘图分析。

因为没看到具体的微分方程组,所以暂时只能提这些意见了!如有需要,进一步交流!

评论 (1)条评论
头像555

  隐秀渔樵·0.00

2016-11-29 16:37:33回答

还没有试过simulink搭建模型求解 O(∩_∩)O  NE牛顿眼 2016-12-03 15:44:02

6 条记录 1/1 页
Document