我对何时使用 ode45(@functionname, tspan, initialvalues,...) 或 ode45('functionname', tspan, initial values,...) 感到有些困惑。我已经看到使用这两种方法的示例,但有时一种有效,另一种无效。
例如
[t,y]=ode45(@MM2, tspan, y0,[],k1,k2,k3)
有效,但[t,y]=ode45('MM2', tspan, y0,[],k1,k2,k3)
无效。
提前谢谢了。
据我了解,当您要集成的功能在另一个文本文件中时,您将使用“@”。如果函数在同一个文本文件中,则不需要使用“@”。
例如:让我们计算范德波尔摆的水平坐标。
在文件 1 中:xdot_van_der_pol.m
function dxdt = xdot_van_der_pol(t, x)
global u;
if size(u,1) == 0
u = 1
end
dx1 = x(2);
dx2 = u*(1 - x(1)^2)*x(2) - x(1);
dxdt = [ dx1 ; dx2 ];
在文件 2 中:integration.m
u = 1;
tf = 20;
xo = [2 ; 0];
[t,x]=ode45(@xdot_van_der_pol, [0 tf], xo);
subplot(221); plot(x(:,1), t(:,1)); hold on;
subplot(224); plot(t(:,1), x(:,2)); hold on;
subplot(223); plot(x(:,1), x(:,2)); hold on;
另一种情况是将所有内容写入同一个文本文件中,这样您就不必使用“@”来调用该函数。