Why Index exceeds the number of array elements (1) if I change the input order in the anonymous function?

1 visualización (últimos 30 días)
Here is the funciton:
function [Y] = d_o(X,t,m,k,c)
x = X(1);
y = X(2);
Y(1,1)=y;
Y(2,1)=1/m*(-k*x-c*y);
end
Here is the script:
T = 0:0.1:100;
y0 = [0.1,1];
m = 1; k = 0.1; c = 0.05;
d_o_an = @(X,t) d_o(X,t,m,k,c);
[tout,yout] = ode45(d_o_an,T,y0);
plot(tout, yout);
I think the problem is in the anonymous function, if I change @(X,t) to @(t,X), the code can run. But why?
  3 comentarios
VBBV
VBBV el 24 de Nov. de 2020
Editada: VBBV el 24 de Nov. de 2020
%if
%d_o_an = d_o(X,t,m,k,c);
[tout,yout] = ode45(@d_o,T,y0);
plot(tout, yout);
Use @ to invoke the function d_o directly

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 24 de Nov. de 2020
ode45 calls the function to be integrated as f(t, Y) . So the time must be the first input.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by