直交関数展開:ベクトルと関数の交差点#
まとめ#
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()

直交展開#
計量空間の元
のとき、これらは 直交系 であるという。 特に、すべてがノルム
ただし
線形結合による表現#
計量空間
と近似することを考える。
二乗誤差
を用いて最小二乗法で近似すると、解は
となる。
証明
内積の微分は
となるため、
これを0とおいて解くと求まる
参考:内積の微分
計量空間
と表される場合に、係数
になる
証明
の両辺と
よって
直交射影#
元
最小二乗近似したものは
より
と書くことができる。
直交基底#
直交系
このとき
直交基底の線形結合で表すことを 直交展開 という。
ルジャンドルの多項式
は区間
パーセバルの式#
と表したとする。このとき、次の パーセバル(・プランシュレル)の式 が成り立つ(
証明
参考#
金谷健一. (2003). これなら分かる応用数学教室: 最小二乗法からウェーブレットまで.