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)
Mostrar comentarios más antiguos
Jiaying Lu
el 24 de Nov. de 2020
Comentada: Jiaying Lu
el 24 de Nov. de 2020
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
Respuesta aceptada
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)
Ver también
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!