wangfeifeiwc 发表于 2007-3-29 22:25

在使用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');三 可是不知道问题出在哪里?仿真的结果非常不理想,希望曾经从事过类似工作的过来人不吝赐教,在下在这里感激不尽了。下面我的错误结果:         我的结果在附件 ‘我自己的错误仿真结果’ 中

xjzuo 发表于 2007-3-30 09:00

问题估计是出在max上."Sout=max(0,y(:,1))-max(0,y(:,3));"也有问题.
我有时间再调试一下.

wangfeifeiwc 发表于 2007-3-30 15:45

谢谢你

谢谢你的关注!和指出的问题。
1. max()函数这样的用法,我以前也用过。结果是对的。
2.这是y(:,1)=,前五个元素的值。
         y(:,3)=,前五个元素的值。
    所以上面程序中 Sout=max(0,y(:,1))-max(0,y(:,3)); 应该也没有什么问题。
   
我的的QQ是290807769,希望能得到你的再一次指导。:@)

wangfeifeiwc 发表于 2007-3-30 21:45

自己顶一下

这个问题卡在这里真不爽

xjzuo 发表于 2007-3-31 07:53

既然你说都没有问题,那你自己多想想吧.

wangfeifeiwc 发表于 2007-3-31 09:16

不是这个意思,我只是把我自己的想法说出来

:@) 不是这个意思,我只是把我自己的想法说出来,当然我的想法不一定是对的,需要有懂的人指出来.到现在我这个问题还没有找到答案,希有兴趣的人一起探讨!拜托了:loveliness:

wangfeifeiwc 发表于 2007-4-1 15:10

自己顶一下

页: [1]
查看完整版本: 在使用ode45()遇到一个问题,希望得到各位高手的指教,前面一贴字体不对