One Dimensional Finite Element Method
Weighted Residual Method-13

■u(L/2)が得られる様に近似式を書き換える■
これまでは、未知数a1を計算し、それを近似式に代入することにより、u(L/2)を得ていました。直接的にu(L/2)が得られると便利ですよね。そのためには、u(L/2)を未知数として、近似式に取り込む必要があります。そこで、近似式を下の様に書くことにしましょう。つまり、近似式を決められた点での未知数の値と関数との積の和にするんですよ。

そして、上式の関数 φ1(x), φ2(x), φ3(x) の条件1として、x=0でu(0)、x=L/2でu(L/2)、x=Lでu(L)が得られる様にするには、下表を満足させなければなりません。また、条件2としてu(0)=u(L/2)=u(L)=1の場合を考えると、φ1(x)+φ2(x)+φ3(x)=1でなければなりません。これら2つの条件は、とても重要です。

関数 x=0で x=L/2で x=Lで
φ1 1 0 0
φ2 0 1 0
φ3 0 0 1

これらの条件を満足する最も簡単な関数 φ1, φ2, φ3 は、以下の様になります。

上に示す様な近似式にすると、何が得かと言うと、u(L/2) が直接、計算される様になります。以前の近似式の場合、未知数は、a1 でした。u(L/2)を求めるには、近似式にa1 を代入するという手間が必要でした。上の近似式の場合、未知数(unknowns)は、u1とu2とu3ですね。これらは全て、α2=P/(EI) の影響を受けることになります。したがって、Neumann型境界条件も扱えることになります。前ページのDirichlet境界条件のみ扱える近似式のu(0)とu(L)は、α2=P/(EI) の影響を受けることはなかった。

上の関数を使って、積分式を計算してみましょう。以前紹介したプログラムWRM1X1.FORのFUNCTION F0とF1 を上図を再現する様に書き換えました。プログラム■THIRTN.FOR■のFUNCTION F0とF1 を見て下さい。IF文を使って上図を再現しています。プログラムを実行すると、u(0)の値を要求してきますので、例題(WRM-1)の場合0を入力して下さい。結果ファイルとしてTHIRTN.FEMを出力します。結果を見ると、a1=0.5681818182 で、u(x=0.5)も同じになっていますよね。

話しは、うまく行っている様に思えますよね。しかし、ここで問題になるのが du/dx です。u(x) は、折線グラフの様になっていますので連続な関数です。しかし、du/dx は、棒グラフの様になり、x/L=0.5 で不連続になってしまいます。この不連続が、有限要素法の誤差につながっています。つまり、これが有限要素法のなきどころです。余談ですが、差分法も、du/dxは不連続です。 では、どうすれば、上の不連続性は軽減または消滅させることができるでしょうか。 方法として、下の3つが有ります。

方 法 説 明 結 果
細分割もっと屈折の数の多い折線グラフにする。du/dxは、滑らかな棒グラフになる。
高次関数du/dx が曲線で近似される。du/dxも、連続に近づく。
Hermite関数法u(x) だけでなく、du/dx も未知数とする。u(x) もdu/dx も連続になる。

上のどの方法も、収束性は確認されています。上の3つの方法で、最も精度が良いのが、Hermite関数法です。しかし、この方法の欠点は、未知数が多くなることです。当初、脚光をあびましたが、現在では、姿をみません。現在残っている方法は、細分割と高次関数の組み合わせです。次の、1次要素では、領域を細分割による方法で Helmholtz equation を解く方法を学びます。


質問/回答

BACK To Linear Element
Menu View Helm wrm Lin Element Rmrk Vari Para Non-L Wire