Fourier 変換の数値計算
電気通信大学 2020 年度オープンキャンパス
緒方 秀教
電気通信大学

大学院情報理工学研究科 情報・ネットワーク工学専攻

2020 年 11 月

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス
緒方秀教

はじめに：Fourier 変換とその数値解法
Fourier 変換
次で定義される関数変換 f 7→ F [f ]．
Z ∞F [f ](ξ) =f (x) exp(−2πiξx)dx.
−∞

振動・波動現象の解析で用いられる．
科学技術研究で重要である．
しかし，減衰の遅い関数 f (x) に対しては，従来の数値積分法では計算が難しい．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス
緒方秀教

はじめに：Fourier 変換とその数値解法
Fourier 変換
次で定義される関数変換 f 7→ F [f ]．
Z ∞F [f ](ξ) =f (x) exp(−2πiξx)dx.
−∞

振動・波動現象の解析で用いられる．
科学技術研究で重要である．
しかし，減衰の遅い関数 f (x) に対しては，従来の数値積分法では計算が難しい．
本発表の目的

Fourier 変換の数値計算に関する研究の紹介．
複素解析関数の性質に基づく数値計算法．
数値解析における複素解析関数の役割について考える．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換：重要だけど計算は難しい
減衰の遅い関数の全無限区間積分に対する DE 公式

Z ∞f (x)dx ≃ h

−∞

N+X

f (ψ(kh))ψ ′ (kh),ψ(u) = sinh(sinh u).

k=−N−(1)hZ ∞dx= π(= 3.14159 26535 89793 . . .).
1+x2−∞

標本点数

計算値

誤差

3.14168 64575 30666
3.14159 25866 30724
3.14159 26535 89794

3 × 10−5
2 × 10−83 × 10−16N+ + N− + 1

1−122−2132139

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換：DE 公式では計算できない

(2)

Z ∞

cos xdx = πe−2π (= 1.15572 73497 90922 . . .).
21+x−∞h

標本点数

計算値

誤差

1.58125 37966 15643
1.34196 68485 53180
1.11369 34847 54938
1.26481 85622 97596
1.17117 00197 53101

4 × 10−1
2 × 10−1
4 × 10−2
9 × 10−2
1 × 10−2

N+ + N− + 1

1−122−22−32−4

13213973143

一向に収束しない．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算

どうすれば Fourier 変換を計算できるだろうか？

Fourier 変換を次のように書き直す：
Z 0Z ∞f (x)e−2πi(ξ−iǫ)x dx
F [f ](ξ) = lim
f (x)e−2πi(ξ+iǫ)x dx +ǫ→+00−∞

右辺の各積分は指数関数的減衰する因子 exp(−2πǫ|x|) を含むので，DE 公式で計算できる．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算
F [f ](ξ) = lim {F+ [f ](ξ + iǫ) − F− [f ](ξ − iǫ)} ,ǫ→+0Z ∞F± [f ](ζ) = ±f (∓x)e±2πiζx dx ( ± Im ζ > 0 ).
0F± [f ](ζ) は上／下半平面 ± Im ζ > 0 における解析関数である．
F± [f ](ζ) の被積分関数は指数関数的減衰する因子 exp(−2π| Im ζ|x)を含むので，DE 公式で計算できる．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算
F [f ](ξ) = lim {F+ [f ](ξ + iǫ) − F− [f ](ξ − iǫ)} ,ǫ→+0Z ∞F± [f ](ζ) = ±f (∓x)e±2πiζx dx ( ± Im ζ > 0 ).
0F± [f ](ζ) は上／下半平面 ± Im ζ > 0 における解析関数である．
F± [f ](ζ) の被積分関数は指数関数的減衰する因子 exp(−2π| Im ζ|x)を含むので，DE 公式で計算できる．
Fourier 変換の数値計算法
1上／下半平面 ± Im ζ > 0 で解析関数 F± [f ](ζ) をDE 公式で計算する．

2

解析関数 F± [f ](ζ) を実軸 R 上に解析接続する（定義域を延長する）．

3

Fourier 変換 F [f ](ξ) = F+ [f ](ξ + i0) − F− [f ](ξ − i0) を得る．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算
Fourier 変換の計算法
1

上／下半平面 ± Im ζ > 0 で解析関数 F± [f ](ζ) を計算する．
Z ∞F± [f ](ζ) = ±f (∓x)e±2πiζx dx ( ± Im ζ > 0 ).
0(±)

(±)

(±)

点 ζ0 ( ± Im ζ0 > 0 ) を適当に取り，ζ0Taylor 級数を求める．

F± [f ](ζ) =∞X

における F± (ζ) の(±)cn(±) (ζ − ζ0 )n ,n=0cn(±) = ±1n!

Z ∞

(±)

(±2πix)n f (∓x)e±2πiζ0xdx( n = 0, 1, 2, . . . ).

0(±)

被積分関数は指数関数的減衰する因子 exp(−2π| Im ζ0 |x) を含むので，DE 公式で計算できる．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算
Fourier 変換の計算法
2

解析関数 F± [f ](ζ) を実軸 R 上に解析接続する（定義域を延長する）．

3

Fourier 変換 F [f ](ξ) = F+ [f ](ξ + i0) − F− [f ](ξ − i0) を得る．

前項で求めた Taylor 級数を連分数に変換して解析接続を行う
一般に連分数関数は収束域が広い．

Taylor 級数→連分数：「商差法」を用いる．
(±)

a0

F± [f ](ζ) =(±)(±)

a1 (ζ − ζ0 )

1+(±)

1+.

(±)

a2 (ζ − ζ0 ).
1 + ..

⇓F [f ](ξ) = F+ [f ](ξ + i0) − F− [f ](ξ − i0).

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算（余談）F± [f ](ζ) の Taylor 係数の計算．
Z
(±)
1 ∞
cn(±) = ±(±2πix)n f (∓x)e±2πiζ0 x dx
n! 0(±)(±)( n = 0, 1, 2, . . . ).

(±)

を純虚数 ±iη0 ( η0 > 0 ) にとると，Z(±)
1 ∞cn(±) = ±(±2πix)n f (∓x)e−2πη0 x dx Laplace 変換！
n! 0

とくに ζ0Laplace 変換の計算によって Fourier 変換が求められる．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算：数値例(1) F [(1 + x 2 )−1 ](ξ) = πe−2π|ξ| ,(2) F [tanh(πx)](ξ) = −i cosech(πξ),1.
(3) F [log |x|](ξ) = −γδ(ξ) −2|ξ|本研究の方法で Fourier 変換 F [f ](ξ) を計算し，誤差を調べた．
多倍長演算（10 進 100 桁）．
次の論文から結果を引用．
H. Ogata: Numerical calculation of Fourier transforms based on
hyperfunction theory, Journal of Computational and Applied
Mathematics, 378 (2020) 112921, DOI: 10.1016/j.cam.2020.112921

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算：数値例

1e+000relative error

Re F [f ](ξ)

4.0

3.0

2.0

1.0

1e-0101e-0201e-0301e-0401e-0501e-0601e-0701e-0800.0-2.0

1e-090-1.00.0

ξRe F [f ](ξ)

1.0

2.0-2-1.5-1-0.500.5

ξrelative error

11.5

2(1) f (x) = (1 + x 2 )−1 , F [f ](ξ) = πe−2π|ξ| .

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス
緒方秀教

25.0

1e+00020.0

1e-010relative error

Im F [f ](ξ)

Fourier 変換の数値計算：数値例

15.0
10.0
5.0
0.0
-5.0
-10.0

1e-0301e-0401e-0501e-0601e-070-15.0

1e-080

-20.0
-25.0
-2.0

1e-0201e-090-1.0

0.0

ξIm F [f ](ξ)

1.0

2.0

-2

-1.5

-1-0.500.5

ξrelative error

11.5

2(2) f (x) = tanh(πx), F [f ](ξ) = −i cosech(πξ).

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算：数値例

1e+000relative error

Re F [f ](ξ)

0.0-5.0

-10.0

-15.0

1e-0101e-0201e-0301e-0401e-0501e-0601e-070-20.0

1e-080-25.0

1e-090-2-1.5-1-0.500.5

ξRe F [f ](ξ)

11.5

2-2-1.5-1-0.500.5

ξrelative error(3) f (x) = log |x|, F [f ](ξ) = −γδ(ξ) −

11.5

2

1.
2|ξ|

以上の数値例から，本方法の有効性が示された．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算：数値例（比較実験）
既存の方法との比較．
（杉原）Richardson 補外& DE 公式．
（大浦・森）振動積分に特化した DE 公式．

F [f ](ξ = 1) を計算した．
ǫ：相対誤差，N ：関数 f (x) の計算回数．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の数値計算：数値例（比較実験）
既存の方法との比較．
（杉原）Richardson 補外& DE 公式．
（大浦・森）振動積分に特化した DE 公式．

F [f ](ξ = 1) を計算した．
ǫ：相対誤差，N ：関数 f (x) の計算回数．
(1) (1 + x 2 )−1f (x)−39(2) tanh(πx)(3) log |x|−76

9 × 10−391252

本方法ǫN

3 × 101242

杉原ǫ
N

1.4 × 10−1927072

9 × 10−2053114

4 × 10−2035280

大浦・森

ǫ
N

7 × 10−631690

5 × 10−571618

1 × 10−691698

5 × 101202

既存の方法と比べて，本方法は有効であることがわかる．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換計算と複素解析関数
Fourier 変換の数値計算法の話を整理する．
Z ∞F [f ](ξ) =f (x)e−2πiξx dx = F+ [f ](ξ + i0) − F− [f ](ξ − i0),−∞Z ∞F± [f ](ζ) = ±f (∓x)e±2πiζx dx ( ± Im ζ > 0 ).
0Fourier 変換の計算法
1実関数 F [f ](ξ) よりも複素解析関数 F± [f ](ζ) ( ± Im ζ > 0 ) が計算しやすいので，F± [f ](ζ) を上／下半平面 ± Im ζ > 0 で計算する．

2

前項で求めた複素関数 F± [f ](ζ) を実軸 R 上に解析接続して，Fourier 変換 F [f ](ξ) を求める．

3

これが可能なのは，F± [f ](ζ) が複素解析関数であるからである．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換計算と複素解析関数
ところで，複素解析関数（正則関数）とは何だったか？
複素関数 f : C → C（複素数変数，複素数値）．
複素関数として微分可能．

df (z)f (z + h) − f (z)= lim
h→0dzh

この極限が存在する.

上の極限は，h が複素平面内のどの方向を取ろうとも，同一の値になる．

lim∆x→0f (z + ∆x) − f (z)f (z + i∆y ) − f (z)= lim∆y→0∆xi∆y( → Cauchy-Riemann の関係式 ).

例えば，Re z = x, Im z = y , |z| は複素解析関数でない．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換計算と複素解析関数
複素解析関数は，遠く離れた 2 点での値が密接に結びついている．

Cauchy の積分定理
If (z)dz = 0 ( C : 閉積分路 ).

C留数定理（→実積分の計算への応用）．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換計算と複素解析関数
複素解析関数は，遠く離れた 2 点での値が密接に結びついている．

Cauchy の積分定理
If (z)dz = 0 ( C : 閉積分路 ).

C留数定理（→実積分の計算への応用）．

Fourier 変換計算の話に戻ると，
F [f ](ξ) = F+ [f ](ξ + i0) − F− [f ](ξ − i0).

F± [f ](ζ)：上／下半平面 ± Im ζ > 0 における複素解析関数．
F± [f ](ζ)：実軸上よりも複素平面での方が計算しやすい．
複素平面上の点における値から，実軸上の値 F± [f ](ξ ± i0) を読み取った．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の計算：佐藤超函数論との関連

佐藤超函数論佐藤幹夫，1958 年．
複素関数論に基づく一般化関数論．
超函数 (hyperfunction) とよばれる一般化関数 f (x) はある複素解析関数 F (z) の実軸 R 上の境界値の差で表される．

f (x) = [F (z)] := F (x + i0) − F (x − i0).
F (z)：超函数 f (x) の定義関数．
∗ 超函数には Schwartz による流儀もある (distribution)．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の計算：佐藤超函数論との関連
超函数の例

Dirac のデルタ関数 δ(x)．
(Z ∞+∞ ( x = 0 )δ(x) =f (x)δ(x − a)dx = f (a).
0( x 6= 0 ),−∞



1−111
δ(x) ==−.
−2πiz
2πi x + i0 x − i0
Heaviside のステップ関数 Y (x)．
(1 (x > 0)
Y (x) =0 ( x < 0 ).

1log(−z) .
Y (x) = −2πi∗ 複素対数関数 log z は主値（log x ∈ R (x > 0) なる分枝）をとる．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の計算：佐藤超函数論との関連
ステップ関数 Y (x) の定義関数

F (z) = −1log(−z)2πiのグラフ．実軸 R 上の境界値の差

F (x + i0) − F (x − i0)がステップ関数 Y (x) を表していることがわかる．

0.5
0.4
0.3
0.2
0.1
Re(F(z)) 0-0.1-0.2-0.3-0.4-0.5-2 -1.5-1 -0.5
Re(z)

0 0.5
-1-1.5
1 1.5
2 -20-0.5

10.5

21.5Im(z)Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の計算：佐藤超函数論との関連
Fourier 変換の数値計算との関連．
F [f ](ξ) = F+ [f ](ξ + i0) − F− [f ](ξ − i0),Z ∞F± [f ](ζ) = ±f (∓x)e±2πiζx dx ( ± Im ζ > 0 ).
0複素解析関数の実軸上の境界値の差！

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス緒方秀教

Fourier 変換の計算：佐藤超函数論との関連
Fourier 変換の数値計算との関連．
F [f ](ξ) = F+ [f ](ξ + i0) − F− [f ](ξ − i0),Z ∞F± [f ](ζ) = ±f (∓x)e±2πiζx dx ( ± Im ζ > 0 ).
0複素解析関数の実軸上の境界値の差！

Fourier 変換の計算：佐藤超函数論との関連
Fourier 変換 F [f ](ξ) は F± [f ](ζ) ( ± Im ζ > 0 ) を定義関数とする超函数である．
今回示した Fourier の数値計算法は，佐藤超函数論におけるFourier 変換の定義をなぞったものである．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス
緒方秀教

まとめ
Fourier 変換
F [f ](ξ) =Z ∞f (x)e−2πiξx dx.

−∞

実は数値計算が難しい．
（Fourier 変換の数値計算）

F [f ](ξ) = F+ [f ](ξ + i0) − F− [f ](ξ − i0),F± [f ](ζ) : 上／下半平面 ± Im ζ > 0 での解析関数．
実数の世界では計算が難しいものを複素数の世界で計算して，実数の世界に戻した（解析接続）．
こんな事ができるのは，複素解析関数は離れた 2 点の値が密接に結びついているからである．
佐藤超函数論との関連．

Fourier 変換の数値計算 電気通信大学 2020 年度オープンキャンパス
緒方秀教