符合 ode45 的 MATLAB 错误

MATLAB error at line with ode45

我正在尝试让 matlab 显示猎物与捕食者的图表

function [ output_args ] = Untitled( input_args )

    options = odeset('RelTol', 1e-4, 'NonNegative', [1 2]);

    [t,x] = ode45('lotka_volterra', [0 30], [2 1], options);

    plot(t,x);
    legend('prey', 'predators');

end


function dxdt = lotka_volterra(t,x)

    a     = 1.2;
    b     = 0.6;
    d     = 0.3;
    gamma = 0.8;

    dxdt    = [0;0];
    dxdt(1) = a * x(1) - b * x(1) * x(2);
    dxdt(2) = d * x(1) * x(2) - gamma * x(2);

end

重点是展示生活在同一环境中的两个物种种群之间的动态关系。

两个导数(dxdt(1) 和 dxdt(2))模拟每个人口的变化率

我尝试使用 Runge-Kutta 积分法来绘制两个物种的人口与时间关系图

错误只是说:

Error in Untitled (line 3)
[t,x] = ode45(@(t,x) lotka_volterra, [0 30], [2 1]);

我很难过任何帮助都会很棒

您可能想要使用函数句柄:

[t,x] = ode45(@lotka_volterra, [0 30], [2;1], options);

或者,更慢但可能更清晰:

[t,x] = ode45(@(t,x) lotka_volterra(t,x), [0 30], [2;1], options);