2

我对何时使用 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)无效。

提前谢谢了。

4

1 回答 1

0

据我了解,当您要集成的功能在另一个文本文件中时,您将使用“@”。如果函数在同一个文本文件中,则不需要使用“@”。

例如:让我们计算范德波尔摆的水平坐标。

在文件 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;

另一种情况是将所有内容写入同一个文本文件中,这样您就不必使用“@”来调用该函数。

于 2018-10-30T14:58:58.013 回答