การสร้างจุดรวมและตุ้มน้ำหนักอัตโนมัติสำหรับรูปสามเหลี่ยมและเตตราดรา


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
มีวิธีที่ง่ายต่อการทำกฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัส Gauss-Legendre ของคุณในการเป็นMathematica{points, weights} = MapThread[Map, {{2 # - 1 &, 2 # &}, Most[NIntegrate`GaussRuleData[n, prec]]}] :
JM

คุณเคยเห็นเหตุการณ์นี้บ้างไหม?
JM

@JM วิธีการที่เสนอข้างต้นของคุณทำไม่ได้ผลสำหรับ prec = Infinity; แต่ขอบคุณสำหรับสิ่งนั้นเช่นกัน

2
ในกรณีที่ว่านี่คือวิธีการที่ว่างานเนื่องจาก Golub และ 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}]]Welsch:
JM

1
นี่คือกระดาษโดย Golub และ Welsch ฉันจะขุดผ่านเอกสารของฉันและดูว่ามีบางสิ่งบางอย่างสำหรับ simplices ...
JM

คำตอบ:



3

นี่คือกระดาษhttp://journal.library.iisc.ernet.in/vol200405/paper6/rathod.pdfที่อธิบายถึงวิธีการแมปสามเหลี่ยมหน่วยกับตาราง 2 มาตรฐานเพื่อคำนวณน้ำหนักและจุดสุ่มตัวอย่างสำหรับ รูปสามเหลี่ยมในแง่ของคะแนน Gauss-Legendre สำหรับ 2-square มาตรฐาน


นั่นเป็นความคิดที่น่าสนใจดูเหมือนว่าสำหรับ n = 2 นี้ต้องการ 4 คะแนนสำหรับการอ้างอิงวรรณกรรมทั่วไปสำหรับรูปสามเหลี่ยมสำหรับ n = 2, 3 คะแนนจะได้รับ คุณรู้อะไรเกี่ยวกับเรื่องนี้หรือไม่?

สิ่งนี้เกิดขึ้นจากข้อเท็จจริงที่ว่าพวกเขากำลังใช้การแมปจากสามเหลี่ยมไปยังสี่เหลี่ยมจัตุรัส ฉันไม่สามารถพูดอะไรได้นอกจากนี้เนื่องจากฉันไม่ได้ทำงานกับรูปสามเหลี่ยม (ฉันใช้รูปสี่เหลี่ยมขนมเปียกปูน) ดังนั้นฉันจึงไม่รู้ว่าจะทำอะไรในทางปฏิบัติ ฉันเพิ่งพบกระดาษและคิดว่ามันดูเหมือนจะตรงไปตรงมาสวยมากที่จะทำ
James Custer

แน่นอนว่ามันค่อนข้างตรงไปตรงมาและฉันจะเห็นว่าบทความอื่นแนะนำ แต่ความเรียบง่ายสำหรับเอกสารนี้และความสง่างามของการใช้บางสิ่งที่ฉันมีอยู่แล้วนั้นเป็นข้อดีสำหรับเอกสารนี้ ข้อเสียคือการประเมินฟังก์ชั่นเพิ่มเติม ขอบคุณในทุกกรณี

อีกด้านหนึ่งคือว่าจุดต่าง ๆ ไม่สมมาตร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.