1

以下に、周期境界条件を使用して 1D で確率的熱方程式を解くコードの一部を示します。確率項はガウス ホワイト ノイズです。

私の質問は、ノイズを正しく実装していますか?
ガウス ノイズは、平均ゼロと 2 番目のモーメントを持つものとして定義されます。これは、時間の任意のペアの値が同じように分布し、統計的に独立していることを示します。

!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 は必要ありません。これは正しいです?ありがとう!

4

1 に答える 1

2

Box-Muller 変換を使用して、一様なサンプルから正規分布したサンプルを取得しているようです。あなたの実装は正しいように見えるので、y1 と y2 は確かにガウス分布を持つ独立した確率変数です。

于 2016-03-17T00:03:16.877 に答える