Matlab质量弹簧系统:给定代码无法运行并返回错误

时间:2018-04-07 21:27:37

标签: matlab ode differential-equations

我正在开始一个项目,涵盖MatLab中的质量弹簧系统建模。在本实验中,我们已经提供了一些在.m文件中运行的初始代码。根据项目的视频说明,代码应该运行而不进行任何修改或编辑。但是,当我运行代码时,会返回许多错误。

代码:

 function LAB08ex1
m = 1;                                     % mass [kg]
k = 4;                                     % spring constant [N/m]
omega0 = sqrt(k/m);
y0 = 0.1; v0 = 0;                          % initial conditions
[t,Y] = ode45(@f,[0,10],[y0,v0],[],omega0); % solve for 0<t<10
y = Y(:,1); v = Y(:,2);                    % retrieve y, v from Y
figure(1); plot(t,y,'b+-',t,v,'ro-');      % time series for y and v
grid on  
%legend('y(t)','v(t)=y''(t)');              % note the use of '' for '
%figure(2); plot(y,v);                      % phase plot
%xlabel('y'); ylabel('v=y'''); grid on
%-----------------------------------------
function dYdt = f(t,Y,omega0)
y = Y(1); v = Y(2);
dYdt = [ v ; -omega0^2*y ];

运行此代码会返回以下错误:

LAB08ex1
Index exceeds array bounds.  
Error in LAB08ex1>f (line 15) y = Y(1); v = Y(2);  
Error in ode45 (line 273) k_(:,1)=feval(FUN,x,t);  
Error in LAB08ex1 (line 6) [t,Y] = ode45(@f,[0,10],[y0,v0],[],omega0);

出了什么问题,我该如何解决?

0 个答案:

没有答案