显然,这可能是一个平庸的错误,但我无法弄清楚如何正确地做(我的八度音阶第一天)。我想将二阶ODEd²x/dt²+ M / L * dx / dt + 5x = 0定义为ODE系统。ODE2.m
看起来像这样:
function dz = ODE2(z,t)
%% d^2x/dt^2 + M/L * dx/dt + 5x = 0
M = 2;
L = 10;
dz = zeros(2,1);
dz(1) = z(2); % <--- apparently here's something wrong?!
dz(2) = -(M/L)*z(2)-5*z(1);
end
那我做
t = linspace(0,1,100);
z = lsode(ODE2,[1;1],t);
...
但是我明白了
error: 'z' undefined near line 6 column 11
但是,我认为z
在的第一行中将其定义为自变量ODE2.m
。也许问题在于这z
是一个向量,并且在定义时未知,但是如何正确地执行呢?如何定义方程并用求解lsode
?
在call中z=lsode(ODE2,[1;1],t);
,ODE2
被解释为一个函数调用,它将对函数求值,然后遇到没有输入参数的问题。注意,如果将语句拆分为fun=ODE2; z=lsode(fun,[1;1],t);
假设Octave以Matlab的方式进行保存,则需要将引用ODE2
作为函数句柄传递,z=lsode(@ODE2,[1;1],t);
才能起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句