在使用ode45()遇到一个问题,希望得到各位高手的指教,前面一贴字体不对
在使用ode45()遇到一个问题,希望得到各位高手的指教。问题来自一篇论文中给出的一组非线性方程,为了仿真该非线性方程组,而使用ode45(),其方程如下:
不好意思!我原先是用WORD编辑这个问题的,可这里不让直接加图片,只好用附件的方式
方程在‘论文中给出的数学方程’的附件里。现在不考虑外部输入时,∑hj [gj ]+与∑hj [gj ]-都不予考虑。[x1]+表示max(x1,0),[x2]+类推。
论文作者给出的一些参数条件是
参数条件在‘论文中参数的值’的附件里
论文作者给出Yout的仿真结果如下:
论文作者的仿真结果在‘论文中作者的仿真结果’的附件里
可是我在仿真的过程中却遇到了问题,我先说说我是怎么做的,我尽可能的说的详细些,希各位高手不要见笑。
一 为了编制,非线性方程的function()函数。
我做了一下符号的变换,令x(1)=x1,x(2)=v1,x(3)=x2,x(4)=v2。给据论文中给的参数得到下面的方程:(1) X(1)’=2-2*x(1)-4*x(2)-4*max(x(3),0)(2) X(2)’=max(x(1),0)-x(2)(3) X(3)’=2-2*x(3)-4*x(4)-4*max(x(1),0)(4) X(4)’=max(x(3),0)-x(4)(5) Yout=max(x(1),0)-max(x(3),0) 下面是我自己编制的matlab的.m文件。文件名为MatsuokaOscillator.m function y=MatsuokaOscillator(t,x) y=;二运用ode45()进行非线性方程的求解,下面是程序:clearclcoptions=odeset;options.Reltol=1e-6;t_final=70; %仿真的最长时间
y0=[-1;1;-1;1];%各个状态的初始条件tic,=ode45('MatsuokaOscillator',,y0);tocSout=max(0,y(:,1))-max(0,y(:,3));plot(t,Sout,'r');三 可是不知道问题出在哪里?仿真的结果非常不理想,希望曾经从事过类似工作的过来人不吝赐教,在下在这里感激不尽了。下面我的错误结果: 我的结果在附件 ‘我自己的错误仿真结果’ 中 问题估计是出在max上."Sout=max(0,y(:,1))-max(0,y(:,3));"也有问题.
我有时间再调试一下.
谢谢你
谢谢你的关注!和指出的问题。1. max()函数这样的用法,我以前也用过。结果是对的。
2.这是y(:,1)=,前五个元素的值。
y(:,3)=,前五个元素的值。
所以上面程序中 Sout=max(0,y(:,1))-max(0,y(:,3)); 应该也没有什么问题。
我的的QQ是290807769,希望能得到你的再一次指导。:@)
自己顶一下
这个问题卡在这里真不爽 既然你说都没有问题,那你自己多想想吧.不是这个意思,我只是把我自己的想法说出来
:@) 不是这个意思,我只是把我自己的想法说出来,当然我的想法不一定是对的,需要有懂的人指出来.到现在我这个问题还没有找到答案,希有兴趣的人一起探讨!拜托了:loveliness:自己顶一下
顶
页:
[1]