非線形多項式の直交基底を求める方法
はろー.
を定数として最高次数がなの多項式で表される関数
の直交基底について,卒業研究で必要になってGoogle先生で調べたので残しておきます.ただしが一様分布に従う場合はググればいろいろ出てくるのに対して,が任意の分布に従う場合にどう計算すればいいかがあまり出てこなかったので,本記事ではが任意の分布に従う場合について書きます.
問題を一般化すると,基底関数を要素として持つベクトルが与えられた場合に,任意の分布に従うについて,異なるどの2つの基底も直交している直交基底ベクトルを導出する方法です.ただし,関数はな関数であり,関数と関数が直交しているとはを満たすことを示すとします.つまり,で一様乱数で分布するに対してとが直交しているか確認するためには以下を満たすかどうか確認すればよいです.
グラムシュミットの直交化法
説明するまでもなく,直交化といえばコレですよね.
以上で,から順番にに対して正規直交系な基底関数を得ることができます.
行列の対角化を使う方法
行列を次のように定義します.
この行列はエルミート行列であるので実数の固有値を持ち,ユニタリ行列を用いて対角化可能です.
で,以下の様に変形していきます.
を,は対角行列なのでの対角要素の平方根を取った行列として,
を元に戻すと
また,は実対角行列であるのでとすると,
となります.したがって,は正規直交基底となる関数を要素として持つベクトルとなります.
計算量について
求めたい直交基底の個数をとします.また両手法ともに任意の分布に従う複素数を事前に個を生成しておくとします.の計算量をとします.基底関数の線形結合で表される関数の加減算は,その関数を各基底関数に対する係数のベクトルで表している場合,かかりますなぜなら,基底関数をととした場合はをと表すので,基底関数が個あった場合は加減算に必要となります.
さて,グラムシュミットの直交化法ではのオーダーとなりますが,行列の対角化を使う方法はらしいです.は分布とか生成方法がわかっていれば事前計算できるので,も事前計算できます.
とはいえ,僕が研究で使う場合は程度に対してとかなので,グラムシュミットの直交化法ではちょっと重いかなって感じですね.