Vector input for ODE45

16 visualizaciones (últimos 30 días)
Oday Shahadh
Oday Shahadh el 22 de Feb. de 2017
Comentada: Walter Roberson el 23 de Feb. de 2017
Sirs, I have something like the below formula:
T=(A+B+C)+(D*T) dt where A, B and C are vectors with let me say (1,6000) length How Can I integrate this formula using ODE45, please help, and thanks in advance

Respuesta aceptada

Walter Roberson
Walter Roberson el 22 de Feb. de 2017
x0 = ... something same length as A;
[T, X] = ode45( @(t, x) f(t, X, A, B, C, D), tspan, x0);
function dy = f(t, y, A, B, C, D)
dy = (A + B + C) + (D*t);
... except of course if that were really your formula you would construct
x0 = ... something same length as A;
ApBpC = A + B + C;
[T, X] = ode45( @(t, x) f(t, X, ApBpC, D), tspan, x0);
function dy = f(t, y, ApBpC, D)
dy = ApBpC + (D*t);
  11 comentarios
Oday Shahadh
Oday Shahadh el 23 de Feb. de 2017
how to develope the loop? to avoid overwriting a previues values?
Walter Roberson
Walter Roberson el 23 de Feb. de 2017
i_vals = 1 : 10 : t;
num_i = length(i_vals);
Tdot = zeros(num_i, 1);
for i_idx = 1 : num_i
i = i_vals(i_idx);
Tdot(i_idx) = A(i) + B(i) + C(i) - T;
end
result = TDot;
Note that the resulting value changes length as t increases. If t represents the time parameter to the ode, then this would mean that you are trying to return a different number of derivatives as time goes on.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by