ইউনিট ত্রিভুজ এবং তেত্রহেদ্রের জন্য ইন্টিগ্রেশন পয়েন্ট এবং ওজন অনুসন্ধান করতে সাধারণত একটি কাগজ বা বইয়ের সাথে পরামর্শ করতেন। আমি এই জাতীয় পয়েন্ট এবং ওজন স্বয়ংক্রিয়ভাবে গণনা করার জন্য একটি পদ্ধতি খুঁজছি। নিম্নলিখিত গণিত কোড উদাহরণ ইউনিট লাইন (কোয়াড / হেক্সাহেড্রন) উপাদানগুলির জন্য ইন্টিগ্রেশন ওজন এবং পয়েন্টগুলি গণনা করে:
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])}
আমি একটি কাগজ / বইয়ের সন্ধান করছি যা অ্যালগোরিদমিকভাবে বর্ণনা করে যে এটি কীভাবে ত্রিভুজ এবং / অথবা তেত্রহেদ্রের জন্য করা হয়। কেউ আমাকে এই সম্পর্কে কিছু তথ্য নির্দেশ করতে পারেন। ধন্যবাদ।
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}]]
।
{points, weights} = MapThread[Map, {{2 # - 1 &, 2 # &}, Most[NIntegrate`GaussRuleData[n, prec]]}]
।