応用数学 ch2メモ(直交関数展開)#
まとめ#
Tip
ベクトル空間上の正規直交基底であらゆるベクトルを表せるのと同様に、関数においても 完備な直交関数系による近似によって任意の関数を表現できる
その近似は直交関数系
直交関数展開#
区間
のとき 直交する という。
関数
のとき、これらは区間
次の関数
これらは区間
は区間
(証明)
以上より
また次の関係も成り立つ。
最小二乗近似#
区間
このような近似は、画像や音声を表す信号を少量の数値のみで高速に伝送したり、メモリの記憶容量を削減するために用いられる。
近似の尺度として最小二乗法
を用いると、各係数
となる
証明
これを0とおくと、係数が求まる
完備#
定義(完備)
直交関数系の無限列
フーリエ級数#
は区間
関数
の係数
これらの係数を フーリエ係数 と呼ぶ。
例(フーリエ級数)#
次の関数
よって、次のようになる
この近似を
Show 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()

直交射影#
元
最小二乗近似したものは
より
と書くことができる。
直交基底#
直交系
このとき
直交基底の線形結合で表すことを 直交展開 という。
ルジャンドルの多項式
は区間
パーセバルの式#
と表したとする。このとき、次の パーセバル(・プランシュレル)の式 が成り立つ(
証明
1つめの式は
2つめの式は
例題#
例2.6#
関数
次のように表せる。
係数
直交関数系
のように近似する事を考える。今回は
となる。
p.34、式(2.13)の定理より、最小二乗近似の係数は一般に
となる。
これに当てはめると、まず
分子のほうは定数は積分の外に出せるという定理
分母は
となるので
つづいて
となる。なぜなら、
のため。(実際は
例2.24#
近似の尺度として最小二乗法
を用いると, 各係数
となり, 特に
となることを示せ.
これを0とおいて解くと求まる
内積の微分は
となるため、
参考:内積の微分
これを0とおいて解くと求まる
例2.29#
式 (2.19) のフーリエ級数
に対してはパーセバルの式の第2式
フーリエ級数とその係数は
となる。
より
は
補足
フーリエ級数
例えば
そこで
式2.112は次のように書き直せる
補足: や はどこから出てきた?
正規直交基底にするために変形したものを打ち消してもとの
例えば
したがってパーセバルの式は次のようになる
(二乗して積分をとったときに正規直交基底は1になったので
(2乗にした
フーリエ級数の直交性
書き直すと最終的に
となる