请教MATLAB中下面的提示是什么意思?
请教MATLAB中下面的提示是什么意思?
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in hlduffing (line 5)
dy(2)=f*cos(0.8*t)-0.2*y(2)-y(1)-y(1)^3;
Error in odearguments (line 88)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in hltest2013 (line 7)
[t,y]=ode45('hlduffing',t0,[1;1]) 返回小木虫查看更多
今日热帖
A(I) = B赋值时,I和B的长度必须相等
不能把3个数赋值给2个数,也不能把2个数赋值给3个数,等等
麻烦帮我看看下面求解微分方程的程序问题出在哪?
不对f循环的时候没有问题的,做循环就出问题了
function dy = hlduffing(t,y)
global f
dy=zeros(3,1);
dy(1)=y(2);
dy(2)=f*cos(0.8*t)-0.2*y(2)-y(1)-y(1)^3;
end
function hlduffing1_bifur_f_getmax
% 最大值法求解分岔图
global f
clear all
t0=[0 100];%积分时间
%bifurcation
for f=linspace(10,32,1000); % f=10:32:1000; %r的变化精度
[t,y]=ode45('hlduffing',t0,[1;1]);
[Xmax]=getmax(y(:,1));
plot(f,Xmax,'k','markersize',1)
hold on
clear Xmax
end,
这里有两个错误 :
1. clear all 的位置
它应该在程序的最上方,而在你的程序里,它在 global f 之后,这样运行到 clear all 之后,全局变量 f 会被删除,你的子程序就无法获得 f 的值了
2. dy=zeros(3,1);
子程序里面,dy 的预设的错误,你的程序假设它是 (2, 1) : dy(1) / dy(2), 但是在程序一开始,却执行 dy=zeros(3,1); 这样就会出现 长度错误,正确的应该是 dy=zeros(2,1);
不过因为我没有你的 getmax 程序,无法运行,但是至少能解决你开始所提出的问题了
你的问题解决没,不知阁下可不可以把你的程序借用一下,多谢