応用数学 ch2メモ(直交関数展開)#

まとめ#

Tip

ベクトル空間上の正規直交基底であらゆるベクトルを表せるのと同様に、関数においても 完備な直交関数系による近似によって任意の関数を表現できる

その近似は直交関数系{ϕi(x)}の線形結合c0ϕ0(x)+c1ϕ1(x)++cnϕn(x)なので、級数(i=1ciϕi(x) など)で表現できる(→フーリエ級数)

直交関数展開#

区間 [a,b] 上の関数 f(x),g(x)

abf(x)g(x)dx=0

のとき 直交する という。

関数 ϕ0(x),ϕ1(x),,ϕn(x) が互いに直交するとき、すなわち

abϕi(x)ϕj(x)dx=0,ij

のとき、これらは区間[a,b]上の 直交関数系 であるという。とくにϕi(x)xの多項式なら、これを 直交多項式 という。

直交多項式の例:ルジャンドルの多項式

次の関数 Pn(x),n=0,1,2,, は n 次の ルジャンドルの多項式 と呼ばれる。

P0(x)=1P1(x)=xP2(x)=12(3x21)P3(x)=12(5x33x)P4(x)=18(35x430x2+3)P5(x)=18(63x570x3+15x)P6(x)=116(231x6315x4+105x25)

これらは区間 [1,1] 上の直交関数系であり, 次の直交関係が成立する.

11Pn(x)Pm(x)dx={22n+1n=m のとき 0nm のとき 

Pn(x) の一般式が次式で表せることが知られている(ロドリゲスの公式).

Pn(x)=12nn!dn(x21)n dxn
直交関数の例
12,coskx,sinkx,k=1,2,3,

は区間 [π,π] 上の直交関数である。

(証明) coskx,sinkx,k=1,2,3, は周期 2π の周期関数であるから、 1 周期 に渡る積分 ππcoskx dx,ππsinkx dx は 0 である。このことから 12coskx, sinkx に対して次のようになる。

ππ12coskx dx=ππ12sinkx dx=0

coskx,sinlx に対しては次のようになる。

ππcoskxsinlx dx=12ππ(sin(k+l)xsin(kl)x)dx=0

kl のとき coskx,coslx に対して次のようになる。

ππcoskxcoslx dx=12ππ(cos(k+l)x+cos(kl)x)dx=0

kl のとき sinkx,sinlx に対して次のようになる。

ππsinkxsinlx dx=12ππ(cos(k+l)xcos(kl)x)dx=0

以上より 12,coskx,sinkx,k=1,2,3,, が直交関数系であることが示された。

また次の関係も成り立つ。

ππ(12)2 dx=π2ππcos2kx dx=12ππ(1+cos2kx)dx=πππsin2kx dx=12ππ(1cos2kx)dx=π

最小二乗近似#

区間[a,b]上の直交関数系{ϕi(x)},i=0,1,,nの線形結合で関数f(x)を近似する事を考える

f(x)c0ϕ0(x)+c1ϕ1(x)++cnϕn(x)

このような近似は、画像や音声を表す信号を少量の数値のみで高速に伝送したり、メモリの記憶容量を削減するために用いられる。

近似の尺度として最小二乗法

J=12ab(f(x)c0ϕ0(x)c1ϕ1(x)cnϕn(x))2 dx
minc0,,cnJ

を用いると、各係数ci

ci=abf(x)ϕi(x)dxabϕi(x)2 dx,i=0,1,,n

となる

証明
Jci=ab(f(x)c0ϕ0(x)c1ϕ1(x)cnϕn(x))ϕi(x)dx=(abf(x)ϕi(x)dxc0abϕ0(x)ϕi(x)dxc1abϕ1(x)ϕi(x)dxcnabϕn(x)ϕi(x)dx)=(abf(x)ϕi(x)dxciabϕi(x)2 dx)

これを0とおくと、係数が求まる

完備#

定義(完備)

直交関数系の無限列 {ϕi},i=0,1,2, があり、任意の連続関数 f(x)ϕ0(x),ϕ1(x),ϕ2(x),,ϕn(x) による近似が n のときに f(x) に収束するとき、 直交関数系 {ϕi}完備 (complete) であるといい、 その収束する級数を関数 f(x){ϕi} による 直交関数展開 という。

フーリエ級数#

12,coskx,sinkx,k=1,2,3,

は区間[π,π]上で完備であることが知られ、これらを用いる直交関数展開を フーリエ級数 (Fourier series) という。

関数f(x)の近似

f(x)a02+a1cosx+b1sinx+a2cos2x+b2sin2x+a3cos3x+b3sin3x+

の係数an,bnは次のようになる

a0=1πππf(x)dx,ak=1πππf(x)coskx dx,bk=1πππf(x)sinkx dx

これらの係数を フーリエ係数 と呼ぶ。

例(フーリエ級数)#

次の関数 f(x) を区間 [π,π] 上でフーリエ級数に展開せよ

f(x)={10xπ のとき 1πx<0 のとき 
a0=1π(π0 dx+0πdx)=π+ππ=0ak=1π(π0coskx dx+0πcoskx dx)=1π([sinkxk]π0+[sinkxk]0π)=0bk=1π(π0sinkx dx+0πsinkx dx)=1π([coskxk]π0[coskxk]0π)=1π(1cos(π)kkcosπk1k)=2(1(1)k)kπ

よって、次のようになる

f(x)=4πsinx+43πsin3x+45πsin5x+47πsin7x+

この近似を f^(x,n)=k=1nbksinkx とおく。pythonで計算すると次の図のようになる

Hide code cell source
import matplotlib.pyplot as plt
import numpy as np

def f(x: np.array) -> np.array:
    y = np.zeros_like(x)
    y[(0 <= x) & (x <= np.pi)] = 1
    y[(-np.pi <= x) & (x < 0)] = -1
    return y

# a_0, a_k が 0なので、 b_k (sinの係数)のみが残る
def b(k):
    return (2 * (1 - (-1)**k)) / (k * np.pi)

def f_hat(x: np.array, n: int) -> np.array:
    approx = np.zeros_like(x)
    for k in range(1, n+1):
        approx += b(k) * np.sin(k * x)
    return approx


fig, ax = plt.subplots()
x = np.linspace(-np.pi, np.pi, 500)
ax.plot(x, f(x), label="$f(x)$", color="black")
ax.plot(x, f_hat(x, n=1), label=r"$\hat{f}(x, n=1)$", linestyle="--", alpha=0.7)
ax.plot(x, f_hat(x, n=5), label=r"$\hat{f}(x, n=5)$", linestyle="--", alpha=0.7)
ax.plot(x, f_hat(x, n=100), label=r"$\hat{f}(x, n=100)$", linestyle="--", alpha=0.7)
ax.plot(x, f_hat(x, n=1000), label=r"$\hat{f}(x, n=1000)$", linestyle="--", alpha=0.7)
ax.set(xlabel="x", title=r"Approximating $f(x)$ by Fourier series")
ax.legend()
fig.show()
../../../_images/c08f121f1e1d4ddb19ef7e204e03244854777104f3b61c2f73a157668738c213.png

直交射影#

uを直交系e1,e2,,enの線形結合の集合Vn{ei}の張る部分空間)で近似することを考える。

uc1e1+c2e2++cnen

最小二乗近似したものは

ci=(u,ei)ei2

より

u^=i=1n(u,ei)ei2ei

と書くことができる。u^の幾何学的な解釈としては、uから{ei}の張る部分空間へと下ろした「垂線の足」となる。 このことから、u^{ei}の張る部分空間Vnへの (直交)射影 と呼ぶ。

直交基底#

直交系e1,e2,,enn=でもよい)による、計量空間Lの元uの最小二乗近似u^uに一致するとき(n=のときはnuに収束するとき)、{ei}L直交基底 であるという。

このときLn次元計量空間n=なら 無限次元計量空間 )であるという。

直交基底の線形結合で表すことを 直交展開 という。

直交基底の例:ルジャンドルの多項式

ルジャンドルの多項式Pn(x)

Pn(x)=12nn!dn(x21)n dxn

は区間[1,1]上の連続関数の直交基底である

11Pn(x)Pm(x)dx={22n+1n=m のとき 0nm のとき 

パーセバルの式#

Lを計量空間とする。u,vLについて、正規直交基底{ei},i=1,,n

u=c1e1+c2e2++cnenv=d1e1+d2e2++dnen

と表したとする。このとき、次の パーセバル(・プランシュレル)の式 が成り立つ(n=でも成り立つ)

(u,v)=i=1ncidi,u2=i=1nci2
証明

1つめの式は

(u,v)=(i=1nciei,j=1ndjej)=i=1nci(ei,j=1ndjej)()=i=1nj=1ncidj(ei,ej)()=i=1nj=1ncidjδij(e)=i=1ncidi

2つめの式は

u2=(u,u)=(i=1nciei,j=1ncjej)=i=1nj=1ncicj(ei,ej)=i=1nj=1ncicjδij=i=1nci2

例題#

例2.6#

例2.6

関数 f(x) を区間 [π,π] 上で 12,coskx,sinkx,k=1,2,3,, によって近似せよ

次のように表せる。

f(x)a02+a1cosx+b1sinx+a2cos2x+b2sin2x+a3cos3x+b3sin3x+

係数an,bnは次のようになる

a0=1πππf(x)dx,ak=1πππf(x)coskx dx,bk=1πππf(x)sinkx dx

直交関数系 {ϕi},(i=0,1,2,) の線形結合で関数f(x)

f(x)c0ϕ0(x)+c1ϕ1(x)++cnϕn(x)

のように近似する事を考える。今回は{ϕi}={12,coskx,sinkx,},(k=1,2,3,) であるため、 12,coskx,sinkxに対する係数をそれぞれa0,ak,bkとおくと、

f(x)a012+a1cosx+b1sinx+a2cos2x+b2sin2x+a3cos3x+b3sin3x+

となる。

p.34、式(2.13)の定理より、最小二乗近似の係数は一般に

ci=abf(x)ϕi(x)dxabϕi(x)2 dx,i=0,1,,n

となる。

これに当てはめると、まずa0

a0=ππf(x)12 dxππ(12)2 dx

分子のほうは定数は積分の外に出せるという定理 abkf(x)dx=kabf(x)dx,kR より

ππf(x)12 dx=12ππf(x) dx

分母は

ππ(12)2 dx=[(12)2x]ππ=π(12)2(π(12)2)=142π=12π

となるので

a0=ππf(x)12 dxππ(12)2 dx=12ππf(x) dx12π=1πππf(x) dx

つづいてak

ak=ππf(x)coskx dxππ(coskx)2 dx=ππf(x)coskx dxπ=1πππf(x)coskx dx

となる。なぜなら、

ππcos2x dx=ππ1+cos2x2 dx(2)=12ππ(1+cos2x) dx=[12(x+12sin2x)]ππ=[12x+14sin2x]ππ=12π+14sin2π=0(12π14sin2π=0)=12π+12π=π

のため。(実際はcos2xではなくcos2kxだが、sinπ=0なので2倍でもk倍でも一緒)

bk=ππf(x)sinkx dxππ(sinkx)2 dx=ππf(x)sinkx dxπ=1πππf(x)sinkx dx
ππsin2x dx=ππ1cos2x2 dx(2)=12ππ(1cos2x) dx=[12(x+12sin2x)]ππ=[12x+14sin2x]ππ=12π+14sin2π=0(12π14sin2π=0)=12π+12π=π

例2.24#

例2.24

近似の尺度として最小二乗法

J=12u(c1e1+c2e2++cnen)2min

を用いると, 各係数 ci

ci=(u,ei)ei2,i=1,,n

となり, 特に {ei} が正規直交系のときは

ci=(u,ei),i=1,,n

となることを示せ.

書籍の回答例

Jci で偏微分すると次のようになる。

Jci=12ci(uj=1ncjej,uk=1nckek)=12(ei,uj=1ncjej)+12(uj=1ncjej,ei)=(uj=1ncjej,ei)=j=1ncj(ej,ei)(u,ei)=j=1ncjδijej2(u,ei)=ciei2(u,ei)

これを0とおいて解くと求まる

ciei2(u,ei)=0ciei2=(u,ei)ci=(u,ei)ei2
J=12u(c1e1+c2e2++cnen)2=12uj=1ncjej2=12(uj=1ncjej,uj=1ncjej)

内積の微分は

ddxf(x),g(x)=df(x)dx,g(x)+f(x),dg(x)dx

となるため、

Jci=12ci(uj=1ncjej,uk=1nckek)=12(ei,uj=1ncjej)+12(uj=1ncjej,ei)=(uj=1ncjej,ei)()
参考:内積の微分

内積の微分は

f(x)=(f1(x),,fn(x))g(x)=(g1(x),,gn(x))

とすると

ddxf(x),g(x)=ddx(i=1nfi(x)gi(x))=i=1nddx(fi(x)gi(x))=i=1n(dfi(x)dxgi(x)+fi(x)dgi(x)dx)()=i=1ndfi(x)dxgi(x)+i=1nfi(x)dgi(x)dx=df(x)dx,g(x)+f(x),dg(x)dx

となる

大学物理のフットノート|物理数学|ベクトルの微分公式(基本編)

(uj=1ncjej,ei)=(u,ei)(j=1ncjej,ei)=(j=1ncjej,ei)(u,ei)=j=1ncj(ej,ei)(u,ei)=j=1ncjδijej2(u,ei)=ciei2(u,ei)

これを0とおいて解くと求まる

ciei2(u,ei)=0ciei2=(u,ei)ci=(u,ei)ei2

例2.29#

例2.29

式 (2.19) のフーリエ級数

(2.19)f(x)a02+a1cosx+b1sinx+a2cos2x+b2sin2x+a3cos3x+b3sin3x+

に対してはパーセバルの式の第2式 u2=i=1nci2 はどう書けるか.

フーリエ級数とその係数は

(2.112)f(x)=a02+k=1(akcoskx+bksinkx)
a0=1πππf(x)dx,ak=1πππf(x)coskx dx,bk=1πππf(x)sinkx dx

となる。

ππ(12)2 dx=π2ππcos2kx dx=12ππ(1+cos2kx)dx=πππsin2kx dx=12ππ(1cos2kx)dx=π(2.10)

より 12π,{coskxπ},{sinkxπ} が正規直交基底となる。

(12)2
ππ(12)2 dx=14ππ dx=14[x]ππ=14(π(π))=142π=π2
補足

フーリエ級数1/2,{coskx},{sinkx}は直交基底だが正規直交基底ではない。

例えばππcos2kx dxは1ではなくπになる。

そこでππcos2kx dx=1になるように1πを乗じたcoskxπが正規直交基底になる。

式2.112は次のように書き直せる

f(x)=π2a012π+k=1(πakcoskxπ+πbksinkxπ)
補足:π2πはどこから出てきた?

正規直交基底にするために変形したものを打ち消してもとのf(x)を表現するため。

例えばcoskx=πcoskxπといったふうに変形しているため

したがってパーセバルの式は次のようになる

ππf(x)2 dx=(π2a0)2+k=1((πak)2+(πbk)2)

(二乗して積分をとったときに正規直交基底は1になったのでπなどの残りの部分が残る感じ)

(2乗にしたf(x)2の項がスッキリしてるのはフーリエ級数の直交性のため)

フーリエ級数の直交性

1/2cossinは直交

ππ12coskx dx=ππ12sinkx dx=0

coskx,sinlxは直交

ππcoskxsinlx dx=12ππ(sin(k+l)xsin(kl)x)dx=0

coskx,coslxklのとき直交

ππcoskxcoslx dx=12ππ(cos(k+l)x+cos(kl)x)dx=0

sinkx,sinlxklのとき直交

ππsinkxsinlx dx=12ππ(cos(k+l)xcos(kl)x)dx=0

書き直すと最終的に

1πππf(x)2 dx=a022+k=1(ak2+bk2)

となる