|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
在这里看到过一个例子,是3维2阶动力学微分方程组,其外力是恒定值,如下:
clear all
n=3;
F=[25;24;20];
m1=31.2;
m2=31.2;
m3=31.2;
k1=67.51;
k2=67.51;
k3=67.51;
c1=0.01;
c2=0.01;
c3=0.01;
M=[m1,0,0;0,m2,0;0,0,m3];
B=[c1+c2,-c2,0;-c2,c2+c3,-c3;0,-c3,c3];
K=[k1+k2,-k2,0;-k2,k2+k3,-k3;0,-k3,k3];
DL=inline('[x(n+1:end,1); inv(M)*(F-B*x(1:n,1)-K*x(1:n,1))]',...
't','x','flag','n','M','K','F','B');
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[t,x]=ode45(DL,[0,3],rand(n,1),options,n,M,K,F,B);
plot(t,x(:,1:n))
而我的动力学方程中,外力为时间的函数F=[10*sin(2*pi*t),0,0];我直接将此函数矩阵替换原先的F=[25;24;20];结果出错:
??? Undefined function or variable 't'.
于是我在前面添加了一句:t=0:0.001:2;,结果又有如下错误:
??? Error using ==> inline/feval
Not enough inputs to inline function.
Error in ==> C:\MATLAB6p5\toolbox\matlab\funfun\private\odearguments.m
On line 104 ==> f0 = feval(ode,t0,y0,args{:});
Error in ==> C:\MATLAB6p5\toolbox\matlab\funfun\ode45.m
On line 155 ==> [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, args, ...
我刚学matlab,请教一下我的问题该如何解决呢?谢谢了。 |
|