【发布时间】:2016-06-06 23:33:16
【问题描述】:
我正在寻找解决这个微分方程的方法。
我在解这类方程方面有一点经验,所以这是我的菜鸟代码
function lab1()
[t,h]=ode45('threepoint', [0 1000], [0 0.25]);
plot(t, h);
function f = threepoint(x, y)
%THREEPOINT Summary of this function goes here
% Detailed explanation goes here
m = 15000;
R1 = 0.1;
R2 = 0.1;
P1 = 0.1;
P2 = 0.1;
B = 4;
rbk = 0.5;
f=[x(6);
x(7);
x(8);
x(9);
x(10);
(-x(6) / (m * sqrt( x(6)*x(6) + x(7)*x(7)))) * (R1 + R2) + (cos(x(3))/m) * P1 + (cos(x(3))/m) * P2;
(-x(7) / (m * sqrt( x(6)*x(6) + x(7)*x(7)))) * (R1 + R2) + (cos(x(3))/m) * P1 + (cos(x(3))/m) * P2;
-(M/I) - (1/I1)* (B/2 + y(1))*P1 + (1/I2)*(B/2+y(2))*P2;
(rbk/I1)*(P1-R1);
(rbk/I2)*(P2-R2);
];
end
在运行这些函数时,我遇到了这样的错误,例如
索引超出矩阵维度。
三点错误(第 11 行)f=[x(6);
odearguments 错误(第 87 行) f0 = feval(ode,t0,y0,args{:}); % ODE15I 将 args{1} 设置为 yp0。
ode45 中的错误(第 113 行)[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
lab1 中的错误(第 2 行)[t,h]=ode45('threepoint', [0 1000], [0 0.25]);
谁能告诉我我在哪里弄错了,我该如何解决这些错误? 提前谢谢!
【问题讨论】:
-
哦,亲爱的,请不要将错误消息添加为图像。也不是代码(一般来说)。请使用复制+粘贴。
-
至于你的问题:看手册:
[TOUT,YOUT] = ode45(ODEFUN,TSPAN,Y0)。现在看看你的错误。时间跨度必须是一个向量,而不是 2 个单独的开始/结束值。 -
@AndrasDeak 那是我的错,我尝试以不同的方式编写此代码,最后粘贴了错误的。我是这样写的 [t,h]=ode45('threepoint', [0 1000], [0 0.25]);
标签: matlab differential-equations