How to introduce a random variable in ode45?

6 vues (au cours des 30 derniers jours)
J Alonso
J Alonso le 2 Mar 2014
Commenté : J Alonso le 2 Mar 2014
Hi to all, I am quite new in Matlab, thanks in advance for your help. I am trying to solve a system of differential equations similar to:
r1'(t)=f(r1,r2,t)+g(r1,r2,t)*z(t);
r2'(t)=j(r1,r2,t)+h(r1,r2,t)*z(t);
I am using ode45 by defining a function file with f, g, j and h. Now my problem is to introduce z(t) as a random number for a normal distribution. This random numbers can be obtained using normrnd(mu,sigma), however, I need my program to take on different random number for each time but use the same at each time for r1' and r2'. Thanks a lot for your help.

Réponse acceptée

Paul
Paul le 2 Mar 2014
Modifié(e) : Paul le 2 Mar 2014
Add
rng('shuffle')
before calling normrnd.
  3 commentaires
Paul
Paul le 2 Mar 2014
Modifié(e) : Paul le 2 Mar 2014
function z=f(t,r)
z=zeros(2,1);
rng('shuffle')
z(1)=f(r1,r2,t)+g(r1,r2,t)*normrnd(mu,sigma); z(2)=j(r1,r2,t)+h(r1,r2,t)*normrnd(mu,sigma);
J Alonso
J Alonso le 2 Mar 2014
Thanks, now it works.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by