- ベストアンサー
フーリエ級数の係数の求め方について。
以下の式を用いて,計算をしようとしております。 4次のフーリエ級数 w(x,y)=Σ(i=1~4)Σ(j=1~4){αij*sin(iπx/a)*sin(jπy/b)} です。見にくかったらすいません。 このとき,係数a,bと64点のw(x,y)の数値が分かっています。あとは,αij(i=4,j=4なので係数が16コ)を求めるだけなのですが,この係数αの求め方が分かりません。 ちなみにαの係数を求めるのに,行列問題として [A]{α}=[w] ここで[A]は各i,jにおけるsin(iπx/a)*sin(jπy/b)の値 としています。 そして,行列[A]の逆行列を求めて,[w]にかければ{α}が求まり,この係数を使って逆にw(x,y)を求めてみたらもともとの値と全く違う結果となってしまいました。 係数αを求めるのにどうすればよいか困っております。詳しい方がいらっしゃいましたらご指導のほう宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご要望に答えて最急降下法について説明します。 1.まず誤差関数Eを定義します。 何通りか方法があるようですが次のようなものでいいと思います。 ただし、DnはW(Xn,Yn)の所望の値とします。 E=(1/2) Σ(n=1~64) {W(Xn,Yn)-Dn}^2 2.Eを各αijにより微分します。 dE/dαijが求まります。 3.αijの更新量Δαijを算出します。 Δαij = -A dE/dαij Aは0より大きい正の実数定数で、任意です。あまり大きすぎるとうまく計算ができなくなり、小さすぎると計算が遅くなります。最初は0.3程度にして遅ければ大きくしてやり直すといいと思います。 4.各αijを更新します。 αij ← αij +Δαij 5.誤差関数の大きさを確認して誤差が十小さくなっていないならステップ2へもどります。 うまくいけばEの値が0になりますが、今回はそういう事は無いと思います。 手順の説明は以上です。 一応、機械的に従えばできるはずです。見てとれたならば失礼ですが、もし疑問がわくとすれば、Eの定義がなぜ上のようなものになるかという事と、更新量の算出方法でしょう。 Eは、全体の誤差が大きくなればなるほどに、出力値が大きくなる関数という事です。係数の(1/2)は微分したときにすっきりするためにつけてあるだけです。 更新量については、dE/dαijとはαの微小変化に関する増減の割合と見れますから、dE/dαij>0のときαijが大きくなれば誤差が増えるとだけいっておきます。 あとはがんばってください。
その他の回答 (2)
- sugakusya
- ベストアンサー率68% (13/19)
w(x,y)=Σ(i=1~4)Σ(j=1~4){αij*sin(iπx/a)*sin(jπy/b)} はi,jの組み合わせによって生まれる「sin(iπx/a)*sin(jπy/b)」の部分が16種類しかないので、64個のデータを満たすようなαijの組み合わせは特殊な場合でしかみつかりません。解ける事を保障するには最低64種類の「sin(iπx/a)*sin(jπy/b)」が必要となります。 ただ、最適化の方法の一種として最急降下法というものがあり、それを使えばなるべく誤差が小さくなるようなαijの組を見つけることができます。 ただ、最急降下法は最適な解が求まるとは限りません。たいていの場合、最適に近い解を算出してしまいます。とはいえ今回は解の存在が非常に危ういので64種類で展開するか、最適に近い解を求めるか、どちらかを選ばざるを得ないでしょう。参考までに。
- arrysthmia
- ベストアンサー率38% (442/1154)
それは、16元64連立一次方程式に、運良く唯一解が在ったが、 検算したら計算が合わない… という意味ですか? そうだとすれば、一次方程式の解き方を間違えたのでは? あるいは、w(x,y) が関数として合わない… という意味なら、 それでいいのです。 そうやって求めた αij では、等式 w(x,y)=Σ(i=1~4)Σ(j=1~4){αij*sin(iπx/a)*sin(jπy/b)} は、(x,y) が64点の内のどれかであるときにしか成立しません。
補足
回答ありがとうございます。おそらく後者ではないかと思っています。 このフーリエ級数式を近似式として用いて,係数αを決めたいのですがそれは無理なのでしょうか? (x,y) が64点の内のどれかであるときにしか成立しないということは・・
補足
回答ありがとうございます。 最急降下法を早速調べてみたのですが,今いち計算方法がピンときません。 今回のような場合,どのように最急降下法を使えばよろしいのでしょうか? お手数ですが,簡単にでも教えていただけると助かります。