output extra variables through ode23 when there are multiple unknowns
Ältere Kommentare anzeigen
By writing a function below, one can output extra variable v (other than unknown u):
function [ut,v]=myode(t,u)
ut=u;v=u+1;
Then output v below (V):
[T,U]=ode23(@myode,[],...)
[Ut,V]=myode(T,U)
But perhaps the above approach only works for the case where the ODE in question has only 1 unknown. When there're multiple unknowns, U will be a matrix rather than a vector. Then how to execute the last sentence above when U as an argument isn't a column vector?
2 Kommentare
Ameer Hamza
am 7 Mär. 2020
You can solve multi-variable differential equations using ode23 by outputting them as elements of a vector. What do your differential equations look like?
feynman feynman
am 8 Mär. 2020
Akzeptierte Antwort
Weitere Antworten (1)
Ameer Hamza
am 8 Mär. 2020
As Walter mentioned, it is not possible to record have multiple output values when using ode23; neither does declaring variables as persistent or global will because of extra calls to myode. But you can tweak your system of differential equations to output any other variable you want. For example, consider the following differential equation
Suppose, you also want to output some other values, like
and
, so you can write the following equivalent system of differential equations
Then you can write myode as
function dydt = myode(t,y)
dydt(1) = y(1);
dydt(2) = 2*t;
dydt(3) = 3*t.^2 + dydt(1);
dydt = dydt(:);
end
and call the ode45 as
[t,y] = ode45(@myode, [0, 5], [1, 3, 1]);
The ode45 will output the value of all the three variables.
3 Kommentare
feynman feynman
am 8 Mär. 2020
feynman feynman
am 8 Mär. 2020
Ameer Hamza
am 8 Mär. 2020
Yes, that true. I will cause overhead as compared to just calculating the values later.
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!