Solving non homogenous differential equations numerically using ode45 etc
    6 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
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
0 commentaires
Réponse acceptée
  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
Plus de réponses (1)
  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
Look how it is resolved and just adapt it to your problem.
0 commentaires
Voir également
Catégories
				En savoir plus sur Ordinary Differential Equations 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!