MATLAB: Erreur lors de l’utilisation d’odarguments: les entrées doivent être des flottants, à savoir simples ou doubles: ode45

Im essayant de résoudre et de représenter graphiquement un système d’odes en utilisant ode45. L’erreur que je reçois est la suivante:
Erreur lors de l’utilisation des odearguments (ligne 113)
Les entrées doivent être flottantes, à savoir simples ou doubles.
Erreur dans ode45 (ligne 115)
odearguments (FcnHandlesUsed, solver_name, ode,
tspan, y0, options, varargin);
Erreur dans test2 (ligne 2)
[t, x] = ode45 (@ vpd1, [0 25], [2,2]);
Ma fonction:
 
function dx = vpd1(t,y)
b = .66;
beta = .79;
C = 203;
K = 543;
d = 2.17;
delta = .36;
syms x(t)
dx = [b*x(1)*((C-x(1)-d*x(2))/C) ; beta*x(2)*((K-x(2)-delta*x(1))/K)];
end
 
Ma fonction de pilote et de tracé:
 
[t,x] = ode45(@vpd1, [0 25], [2,2]);
plot(t, x(:,1), '-', t, x(:,2), '-')
 
J’ai formaté [t, x] sur la basehttps://www.mathworks.com/help/matlab/ref/ode45.html
Veuillez me faire savoir comment résoudre ce problème

Meilleure réponse

  • ode45 est un solveur numérique. Il n’est pas nécessaire de définir la variable symbolique à l’intérieur de la fonction. En outre, la variable d’état ODE est «y», pas «x». Remplacez la définition de fonction par
     

    function dx = vpd1(t,y)
    b = .66;
    beta = .79;
    C = 203;
    K = 543;
    d = 2.17;
    delta = .36;
    dx = [b*y(1)*((C-y(1)-d*y(2))/C) ; beta*y(2)*((K-y(2)-delta*y(1))/K)];
    end