Effacer les filtres
Effacer les filtres

Solving non homogenous differential equations numerically using ode45 etc

9 vues (au cours des 30 derniers jours)
How is a non homogenous differential equation solved in MATLAB using ode45 or ode23. I have a function like:- dmdt = a*exp(Asin(wt) + (2-m)^2);
Can I obtain the numerical solution for this?
Thanks in advance

Réponse acceptée

Mischa Kim
Mischa Kim le 29 Oct 2014
Modifié(e) : Mischa Kim le 4 Nov 2014
Sarah, yes you can. The typical approach for such an example is to create two functions:
function my_EOM()
a = 1;
A = 1;
w = 1;
fun = @(w,x) sin(w.*x);
param = {a; A; w; fun};
IC = -1;
[t,m] = ode45(@EOM,[0 1],IC,[],param);
plot(t,m)
xlabel('t')
ylabel('m')
grid
end
function dmdt = EOM(t, m, param)
a = param{1};
A = param{2};
w = param{3};
fun = param{4};
dmdt = a*exp(A*fun(w,t) + (2 - m)^2);
end
Save both functions in the same .m-file and with name my_EOM.m. Execute and enjoy.
  2 commentaires
Sarah Ghosh
Sarah Ghosh le 4 Nov 2014
Thanks for your answer, but is there no possible way to pass the external input to the ode function (here, EOM). I basically want to plot and check the external input and the solution obtained via the differential equation. So, I need the external input in the my_EOM function so that I have both these two as vectors. Is there any way to do that? Or do I just create the input again in my_EOM?
Mischa Kim
Mischa Kim le 4 Nov 2014
See updated answer.

Connectez-vous pour commenter.

Plus de réponses (1)

Orion
Orion le 29 Oct 2014
you can rewrite your equation as :
dmdt + a*exp(Asin(wt)) * exp((2-m)^2) = 0
which is of the form of
y'(t) + f(t)y(t) = g(t)
with
y'(t) = dmdt
f(t) = a*exp(Asin(wt))
y(t) = exp((2-m)^2)
g(t) = 0
This is similar to the example 3 of the page ode45
Look how it is resolved and just adapt it to your problem.

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by