三角形と四面体の積分点と重みの自動生成


12

通常、紙または本を調べて、単位三角形と四面体の積分点と重みを見つけます。このような点と重みを自動的に計算する方法を探しています。次のMathematicaコード例は、単位線(四面体/六面体)要素の積分の重みと点を計算します:

unitGaussianQuadraturePoints[points_] := 
  Sort[x /. 
    Solve[Evaluate[LegendreP[points, x] == 0], {x}], ! 
     OrderedQ[N[{#1, #2}]] &];

unitGaussianQuadratureWeights[points_] := 
  Module[{gps, f, int, integr, vars, eqns}, 
   gps = unitGaussianQuadraturePoints[points];
   f[0, 0] := 1;
   f[0., 0] := 1.;
   f[x_, n_] := x^n;
   int = Integrate[f[x, #], x] & /@ Range[0, points - 1];
   integr = Subtract @@@ (int /. x :> {1, -1});
   vars = Table[Unique[c], {Length[gps]}];
   eqns = 
    Table[Plus @@ Thread[Times[vars, f[#, i - 1] & /@ gps]] == 
      integr[[i]], {i, points}];
   Return[(vars /. Solve[eqns, vars])];];


unitGaussianQuadratureWeights[2]

{{1, 1}}

unitGaussianQuadraturePoints[2]

{1/Sqrt[3], -(1/Sqrt[3])}

三角形や四面体に対してこれがどのように行われるかをアルゴリズムで説明した論文/本を探しています。誰かがこれに関する情報を教えてくれますか。ありがとう。


1
であなたのガウス・ルジャンドル求積規則を行うための簡単な方法がありますMathematicaは{points, weights} = MapThread[Map, {{2 # - 1 &, 2 # &}, Most[NIntegrate`GaussRuleData[n, prec]]}]
JM

いずれにしても、これを見たことがありますか?
JM

@JM、上記で提案した方法は、残念ながら、prec = Infinityでは機能しません。しかし、それもありがとう。

2
その場合、GolubとWelschによる機能するメソッドを次に示しますTranspose[MapAt[2(First /@ #)^2 &, Eigensystem[SparseArray[{Band[{2, 1}] -> #, Band[{1, 2}] -> #}, {n, n}]], {2}]] &[Table[k/Sqrt[(2 k - 1)(2 k + 1)], {k, n - 1}]]
JM

1
ここでゴラブとウェルシュの論文です。私は私の論文を通じて掘ると...シンプレックスのための何かがありますかどうかを確認します
JM

回答:



3

以下は、http://journal.library.iisc.ernet.in/vol200405/paper6/rathod.pdfの論文です。単位三角形を標準の2角形にマッピングして、標準2正方形のガウス-レジェンドレ点による三角形。


これは興味深いアイデアです。n= 2の場合、これには4ポイントが必要です。n= 2の三角形に関する一般的な参考文献では、3ポイントが与えられます。これについて何か知っていますか?

これは、三角形から正方形へのマッピングを使用しているという事実に起因しています。私は三角形を使って作業していないのでそれ以上は何も言えません(私は四辺形を使用しています)。そのため、実際に通常何が行われるかわかりません。私はちょうどその論文を見つけ、それを行うのはかなり簡単なことのように思えた。
ジェームスカスター

実際、それは非常に簡単であり、他の論文が示唆することがわかりますが、この論文のシンプルさと、私がすでに持っているものを使用することの優雅さは、この論文にとってプラスです。欠点は、追加の関数評価です。いずれにせよありがとう。

もう1つの欠点は、ポイントが対称ではないことです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.