声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1090|回复: 6

[编程技巧] 在使用ode45()遇到一个问题,希望得到各位高手的指教,前面一贴字体不对

[复制链接]
发表于 2007-3-29 22:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
在使用ode45()遇到一个问题,希望得到各位高手的指教。

问题来自一篇论文中给出的一组非线性方程,为了仿真该非线性方程组,而使用ode45(),其方程如下:

     不好意思!我原先是用WORD编辑这个问题的,可这里不让直接加图片,只好用附件的方式

          方程在‘论文中给出的数学方程’的附件里。
现在不考虑外部输入时,∑hj [gj ]+与∑hj [gj ]-都不予考虑。[x1]+表示max(x1,0)[x2]+类推。

论文作者给出的一些参数条件是

       参数条件在‘论文中参数的值’的附件里


论文作者给出Yout的仿真结果如下:

      论文作者的仿真结果在‘论文中作者的仿真结果’的附件里


可是我在仿真的过程中却遇到了问题,我先说说我是怎么做的,我尽可能的说的详细些,希各位高手不要见笑。

为了编制,非线性方程的function()函数。

     我做了一下符号的变换,令x(1)=x1x(2)=v1x(3)=x2x(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=[2-2*x(1)-4*x(2)-4*max(0,x(3));max(0,x(1))-x(2);2-2*x(3)-4*x(4)-4*max(0,x(1));max(0,x(3))-x(4)];
二  运用ode45()进行非线性方程的求解,下面是程序:
clear
clc
options=odeset;
options.Reltol=1e-6;
t_final=70;     %仿真的最长时间

y0=[-1;1;-1;1];  %各个状态的初始条件
tic,[t,y]=ode45('MatsuokaOscillator',[0,t_final],y0);toc
Sout=max(0,y(:,1))-max(0,y(:,3));
plot(t,Sout,'r');
三 可是不知道问题出在哪里?仿真的结果非常不理想,希望曾经从事过类似工作的过来人不吝赐教,在下在这里感激不尽了。下面我的错误结果:
           我的结果在附件 ‘我自己的错误仿真结果’ 中

论文中给出的数学方程

论文中给出的数学方程

论文中参数的值

论文中参数的值

论文中作者的仿真结果

论文中作者的仿真结果

我自己的错误仿真结果’

我自己的错误仿真结果’
回复
分享到:

使用道具 举报

发表于 2007-3-30 09:00 | 显示全部楼层
问题估计是出在max上."Sout=max(0,y(:,1))-max(0,y(:,3));"也有问题.
我有时间再调试一下.
 楼主| 发表于 2007-3-30 15:45 | 显示全部楼层

谢谢你

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

论文中的原文1

论文中的原文1

论文中的原文2

论文中的原文2
 楼主| 发表于 2007-3-30 21:45 | 显示全部楼层

自己顶一下

这个问题卡在这里真不爽
发表于 2007-3-31 07:53 | 显示全部楼层
既然你说都没有问题,那你自己多想想吧.
 楼主| 发表于 2007-3-31 09:16 | 显示全部楼层

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

:@) 不是这个意思,我只是把我自己的想法说出来,当然我的想法不一定是对的,需要有懂的人指出来.到现在我这个问题还没有找到答案,希有兴趣的人一起探讨!拜托了:loveliness:
 楼主| 发表于 2007-4-1 15:10 | 显示全部楼层

自己顶一下

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-24 19:23 , Processed in 0.060313 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表