当前位置: 首页 > 论文投稿 >一个脉冲动力系统的仿真结果超奇怪,请帮我看看问题在哪!

一个脉冲动力系统的仿真结果超奇怪,请帮我看看问题在哪!

作者 jcz1919
来源: 小木虫 200 4 举报帖子
+关注

总共是四个函数,分别保存在同一个MATLAB 目录下,然后 运行 shiyan20160708sol 这个函数就会出现我的仿真结果,
function [x,t]=lgktjshiyan20160708(t0,tn,x0,h)

t=t0:h:tn;
n=length(t);
[m,q]=size(x0);
x1=zeros(m,n);
x1(1:m,1)=x0;

for i=1:n-1
    K1=shiyan20160708(t(i),x1(:,i));
    K2=shiyan20160708(t(i)+h/2,x1(:,i)+h/2*K1);
    K3=shiyan20160708(t(i)+h/2,x1(:,i)+h/2*K2);
    K4=shiyan20160708(t(i)+h,x1(:,i)+h*K3);
    x1(:,i+1)=x1(:,i)+h/6*(K1+2*K2+2*K3+K4);
   
   
end
   x=x1;
第一段这是
function d=shiyan20160708(t,x)
v1=1.2;
v2=1.5;
v3=1;
A=[-v1 0 0;v1 -v2 0;0 v2 -v3];

d=A*x(1:3)+[phi(x(1));0;0];
end
第二段
function d=phi(u)
if u>=12
    d=u;
elseif u<12 && u>=8
    d=1.2*u;
else d=1.4*u;
end
end
第三段
1919 2016/7/8 14:11:13
function shiyan20160708sol
v1=1.2;
v2=1.5;
v3=1;
M=2;
j=10;
initial=zeros(3,j);
initial(:,1)=[13 8 6]';
[x t]=lgktjshiyan20160708(0, M,initial(:,1),0.001);

l=length(t);
%x(1,l)=1.5*x(1,l);
x(2,l)=1.2*x(2,l);
x(3,l)=0.6*x(3,l);
initial(:,2)=x(:,l);
TT=t;
XX=x(1:3,;



for k=2:j
   
[x t]=lgktjshiyan20160708((k-1)*M, k*M,initial(:,k),0.001);
l=length(t);
%x(1,l)=1.5*x(1,l);
x(2,l)=1.2*x(2,l);
x(3,l)=0.6*x(3,l);
initial(:,k+1)=x(:,l);
TT=[TT t];
XX=[XX x(1:3,];
end
plot(TT,XX)


可以观察到,x(1)的曲线过一小段时间后变成恒值,这就是奇怪之处。因为 x(1) 的导数不可能是个恒定不变的,更不可能为0,所以x(1)不应该是直线,而应该是曲线才对
所以,请高手帮我看看到底问题出在哪了? 返回小木虫查看更多

今日热帖
  • 精华评论
  • jxlpyjx

    xxie

  • jcz1919

    引用回帖:
    3楼: Originally posted by jxlpyjx at 2016-07-09 19:17:33
    xxie

    啥意思呀

  • jcz1919

    自己顶起来!

猜你喜欢
应助之星
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓