How can I add rabdom variables to an ode

So i have these two differential equations that I can solve but I want to add a noisy term to one of the variables, the options are to either have a random number between -1 and 1 or just a sin/cos term that varies between this, the code runs fine until i attempt to add this noise then it gets errors can anyone help i am just not sure how to add this noisy term
h=0.01;
ti=0;
tf=5;
N=floor(tf/h);
t=linspace(ti, tf, N);
b = 2;
a = 0.5;
x(1)=0.1;
y(1)=0.1;
noise=rand(-1,1);
for i=1:(N-1)
x_tmp = x(i)+h*a*x(i)*(8-x(i))*(x(i)*x(i)-16);
y_tmp = y(i)+h*(6+b^2) +h*noise;
x(i+1) = x(i)+h/2*(a*x(i)*(8-x(i))*(x(i)*x(i)-16))+a*x_tmp*(8-x_tmp)*(x_tmp*x_tmp-16);
y(i+1) = y(i)+h/2*(6+b*b+y_tmp);
end

2 Kommentare

Mischa Kim
Mischa Kim am 4 Feb. 2014
Without having gone through your code, what makes you think that the code does not work "fine" anymore when adding noise?
Azzi Abdelmalek
Azzi Abdelmalek am 4 Feb. 2014
Post your ode function

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Paul
Paul am 4 Feb. 2014
Bearbeitet: Paul am 4 Feb. 2014

0 Stimmen

rand gives a random value between 0 and 1. The arguments of rand are not the boundaries but the size (of the matrix) of the output. change
noise=rand(-1,1);
to:
noise = -1 + 2*rand(1)
Bill
Bill am 4 Feb. 2014

0 Stimmen

Thanks it runs now, but it doesn't seem to actually do anything i.e add noise, is it changing with iteration or is it because the amplitude h is so small that any effect is removed?

Kategorien

Mehr zu Programming finden Sie in Hilfe-Center und File Exchange

Tags

Noch keine Tags eingegeben.

Gefragt:

am 4 Feb. 2014

Beantwortet:

am 4 Feb. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by