MATLAB ODE45求解遇到问题
我要用ode45求解这样一个方程组,其中c、d、l为自己可设置的变量,最后要观察x随时间t的变化情况。我的MATLAB代码如下:调用函数:functiondy=shouk...
我要用ode45求解这样一个方程组,其中c、d、l为自己可设置的变量,最后要观察x随时间t的变化情况。
我的MATLAB代码如下:
调用函数:
function dy=shoukong(t,y)
c=input('请输入耦合度c:');
l=input('请输入牵制密度l:');
d=input('请输入牵制强度d:');
dy=zeros(15,1);
u=[36,2,18];%平衡点
L=[3,-1,0,-1,-1;
-1,2,-1,0,0;
0,-1,2,-1,0;
-1,0,-1,2,0;
-1,0,0,0,1;];
a1=[];
a2=[];
a3=[];
for j=1:size(L,1)
a1=[a1;y((j-1)*3+1)];
a2=[a2;y((j-1)*3+2)];
a3=[a3;y((j-1)*3+3)];
end
for i=1:size(L,1)
dy((i-1)*3+1)=y((i-1)*3+1)-y((i-1)*3+2)*y((i-1)*3+3)-c*L(i,:)*a1-c*d*(y((i-1)*3+1)-u(1));
dy((i-1)*3+2)=9*y((i-1)*3+2)-y((i-1)*3+3)-c*L(i,:)*a2-c*d*(y((i-1)*3+2)-u(2));
dy((i-1)*3+3)=y((i-1)*3+1)-2*y((i-1)*3+3)-c*L(i,:)*a3-c*d*(y((i-1)*3+3)-u(3));
end
%for i=1:1:l
% dy(i,1)=y((i-1)*3+1)-y(i,2)*y(i,3)-c*(L(i,1)*y(1,1)+L(i,2)*y(2,1)+L(i,3)*y(3,1))-c*d*(y(i,1)-p(1));
% dy(i,2)=9*y(i,2)-y(i,3)-c*(L(i,1)*y(1,2)+L(i,2)*y(2,2)+L(i,3)*y(3,2))-c*d*(y(i,2)-p(2));
% dy(i,3)=y(i,1)-2*y(i,3)-c*(L(i,1)*y(1,3)+L(i,2)*y(2,3)+L(i,3)*y(3,3))-c*d*(y(i,3)-p(3));
%end
运行函数:
b=ones(1,size(L,1)*3);
t=0:0.1:20;
[t,y]=ode45('shoukong',t,b);
plot(t,y)
legend('y1','y2','y3')
hold on;
当运行“运行函数”后,命令窗口不断重复如下:
根本没有显示结果。
还望高手指点哪里错了,或帮小弟重新改写一下以上的代码。谢谢了。 展开
我的MATLAB代码如下:
调用函数:
function dy=shoukong(t,y)
c=input('请输入耦合度c:');
l=input('请输入牵制密度l:');
d=input('请输入牵制强度d:');
dy=zeros(15,1);
u=[36,2,18];%平衡点
L=[3,-1,0,-1,-1;
-1,2,-1,0,0;
0,-1,2,-1,0;
-1,0,-1,2,0;
-1,0,0,0,1;];
a1=[];
a2=[];
a3=[];
for j=1:size(L,1)
a1=[a1;y((j-1)*3+1)];
a2=[a2;y((j-1)*3+2)];
a3=[a3;y((j-1)*3+3)];
end
for i=1:size(L,1)
dy((i-1)*3+1)=y((i-1)*3+1)-y((i-1)*3+2)*y((i-1)*3+3)-c*L(i,:)*a1-c*d*(y((i-1)*3+1)-u(1));
dy((i-1)*3+2)=9*y((i-1)*3+2)-y((i-1)*3+3)-c*L(i,:)*a2-c*d*(y((i-1)*3+2)-u(2));
dy((i-1)*3+3)=y((i-1)*3+1)-2*y((i-1)*3+3)-c*L(i,:)*a3-c*d*(y((i-1)*3+3)-u(3));
end
%for i=1:1:l
% dy(i,1)=y((i-1)*3+1)-y(i,2)*y(i,3)-c*(L(i,1)*y(1,1)+L(i,2)*y(2,1)+L(i,3)*y(3,1))-c*d*(y(i,1)-p(1));
% dy(i,2)=9*y(i,2)-y(i,3)-c*(L(i,1)*y(1,2)+L(i,2)*y(2,2)+L(i,3)*y(3,2))-c*d*(y(i,2)-p(2));
% dy(i,3)=y(i,1)-2*y(i,3)-c*(L(i,1)*y(1,3)+L(i,2)*y(2,3)+L(i,3)*y(3,3))-c*d*(y(i,3)-p(3));
%end
运行函数:
b=ones(1,size(L,1)*3);
t=0:0.1:20;
[t,y]=ode45('shoukong',t,b);
plot(t,y)
legend('y1','y2','y3')
hold on;
当运行“运行函数”后,命令窗口不断重复如下:
根本没有显示结果。
还望高手指点哪里错了,或帮小弟重新改写一下以上的代码。谢谢了。 展开
1个回答
2013-01-02
展开全部
已解决,吧上面输入去掉就好了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询