amazon:Excelで操る! ここまでできる科学技術計算 第2版 楽天: Excelで操る! ここまでできる科学技術計算 [ 神足 史人 ] |
定積分は関数、xの区間、x軸で囲まれた領域の面積を計算します。 数値積分は有限個の点(x0,x1,x2,x3, ・・・・)での関数値(y0,y1,y2,y3,・・・)から 面積を算出します。点の数が少ないと、誤差が発生します。 |
図1 数値積分を行う例題のグラフ |
たった1日で即戦力になるExcelの教科書 入門者のExcel VBA―初めての人にベストな学び方 (ブルーバックス) |
ルジャンドルの多項式Pn(x)は次のn次多項式で定義され、xの定義域は[-1,1]である。nが偶数のときPn(x)は偶関数で、nが奇数のときPn(x)は奇関数である。 Pn(x) = {1/(2nn!)}dn(x2 -1)n/dxn ・・・・ (1) 具体的に書くと次の多項式となる。 P0(x) = 1 P1(x) = x P2(x) = (1/2)(3x2 -1) ・・・・・・ 2次以降の多項式は次の漸化式を利用して容易に計算ができる。 (n+1) Pn+1(x) - (2n+1)xPn(x) + nPn-1(x) = 0 ・・・ (2) (2)式がら(3)式に変形できる。 Pn+1(x) = [(2n+1)xPn(x) - nPn-1(x)]/(n+1) ・・・ (3) (3)式を用いると、図2のように、エクセルシートにルジャンドル多項式の関数が設定できる。 図2 ルジャンドル多項式の関数の設定法 |
関数f(x)を補間する場合、ルジャンドル多項式を使えば、補間点数が少なくても精度の良い補間ができる。補間点はN次ルジャンドル多項式PN(x)が0となるxの解で、その解はN個存在し、x1,x2,x3, ・・・,xNとする。補間関数fN(x)は次のN-1次の多項式となる。 N-1 N fN(x) = Σ ck Pk(x) ck = [(2k+1)/2]ΣwiPk(xi)f(xi) ・・・ (4) k=0 i=1 N-1 wi = {Σ[(2k+1)/2][Pk(xi)]2)-1 ・・・ (5) k=0 |
ルジャンドル多項式による補間式を積分することにより、ガウス・ルジャンドル積分公式が導出される。 区間[-1,1]における関数f(x)の積分値Iは次式となる。 1 N I = ∫fN(x)dx = Σwif(xi) ・・・ (6) -1 i=1 区間[a,b]で関数g(x)を積分する場合、次式により区間[-1,1]の関数に変換できる。 f(x) = [(b-a)/2]g([(b-a)/2]x+(b+a)/2) ・・・ (7) |
n次ルジャンドル関数Pn(x)=0の解は次の区間に存在する。 [sin(π(n-2i)/2n),sin(π(n-2i+2)/2n)] ・・・ (8) 図3のように、計算結果エリアを設定し、図4のようにVBAを用いて、2分法により解を求める。 図3 ルジャンドルの多項式の解を求めるエクセルシート 図4 ルジャンドルの多項式の解を求める2分法のVBA 「多項式=0の解計算」ボタンにマクロを登録し、ボタンをクリックすると、図5のようにシート上に計算結果が出力する。 図5 ルジャンドル多項式の解の計算結果 |
計算された多項式の解を参照し、重みwiを計算するVBAを図5に示す。 図5 重みwiを計算するVBA 「重みwiの計算」ボタンにこのマクロを登録し、ボタンをクリックすると、図6のようにシート上に計算結果が出力する。 図6 重みwiの計算結果 |
関数 f(x) = 1/(1+x2) を区間(0〜1)で積分すると、π/4=0.785398163が得られることが解っている。 VBAを用いて、図7のように関数(fun)を作成する。 図7 VBAを用いた被積分関数 図8のように、エクセルシート上に、計算済のルジャンドル多項式の解と重みwiをコピーし、それに対応する関数値f(x)とwi・f(x)を計算する。wi・f(x)の合計値が求める積分値となる。 図8 ガウス・ルジャンドル公式による数値積分用のエクセルシート |