- 26 名前:デフォルトの名無しさん [2006/11/29(水) 00:48:57 ]
- 波数kの関数phik(k)から、xの関数phi(x)へと逆フーリエ変換をする
プログラムを作るのにてこずっています。 phi(x) = sum phik(k)*exp(i*k*x)だと思うのですが、どうもうまく作れません。 xは位置座標、kは波数で、それぞれ-5〜5、-1〜1の間でとっています。 試しに、phi(x)=2cos(0.1x)の波を作るため、k=-0.1と0.1以外は重み (amp)を0にとりました。 何かがおかしいとは思って考えているのですが、わかりません。 どうかアドバイスを頂けたら幸いです。よろしくお願いします。 integer nx, imax, nk, jmax, i, j real*8 xmax, dx, kmax, dk, x, k complex*16 phi(500), phik(500), sumphik parameter (xmax = 5.0d0, nx = 50, kmax = 1.0d0, nk = 10) dx = xmax/nx ; imax = 2*nx + 1 dk = kmax/nk ; jmax = 2*nk + 1 do i = 1, imax x = -xmax + (i-1)*dx do j = 1, jmax k = -kmax + (j-1)*dk if (((k-0.1d0).lt.1.0d-3).or.((k+0.1d0).lt.1.0d-3)) then amp = 1.0d0 else amp = 0.0d0 end if phik(j) = amp*cdexp((0.0d0, 1.0d0)*k*x) sumphik = sumphik + phik(j) end do phi(i) = sumphik write(*, *) x, dble(phi(i)) sumphik = 0.0d0 end do end
|

|