стохастическое уравнение теплопроводности - Фортран

У меня есть часть моего кода ниже, который решает стохастическое уравнение теплопроводности в 1D с периодическими граничными условиями. Стохастический термин — гауссовский белый шум.

Мой вопрос: правильно ли я реализую шум?
Гауссовский шум определяется как имеющий нулевое среднее и второй момент, который говорит нам, что значения в любой паре моментов времени одинаково распределены и статистически независимы.

!I first define arrays for the uniform and gaussian random numbers

real, dimension (-1:n) :: u,v,x1,x2,y1,y2 
real :: k=0.005,h=0.1,R !time and position step, respectively
R=k/h**2.

!generate Uniform, then Gaussian Random numbers for White Gaussian Noise
call random_seed 
call random_number(x1)
call random_number(x2)

y1=sqrt(-2*log(x1))*cos(2*pi*x2)
y2=sqrt(-2*log(x1))*sin(2*pi*x2)
y1=y1*sigma+mu
y2=y2*sigma+mu

do i=0,n-1
  v(0)=v(n)
  v(-1)=v(n-1)
  v(i) = (1-2.0*R)*u(i)+R*(u(i+1)+u(i-1))+k*y1(i) !discretized stochastic heat eqn
end do

Это правильный способ добавить гауссовский шум в мой код? Я использую только случайное число Гаусса y1, мне не нужно y2. Это правильно? Спасибо!


person Jeff Faraci    schedule 16.03.2016    source источник


Ответы (1)


Похоже, вы используете преобразование Бокса-Мюллера для получить нормально распределенные выборки из однородных выборок. Ваша реализация кажется правильной, поэтому y1 и y2 действительно являются независимыми случайными величинами с распределением Гаусса.

person Javier Martín    schedule 17.03.2016