การรวมเชิงตัวเลขของอินทิกรัลหลายมิติพร้อมขอบเขตที่รู้จัก


12

ฉันมีอินทิกรัลไม่เหมาะสม (2 มิติ)

I=AW(x,y)F(x,y)dxdy

ที่โดเมนของการรวมมีขนาดเล็กกว่าx = [ - 1 , 1 ] , Y = [ - 1 , 1 ]แต่ต่อไป จำกัด โดยF ( x , Y ) > 0 เนื่องจากFและWราบรื่นและW 0Ax=[1,1]y=[1,1]F(x,y)>0FWW0ที่ขอบเขตความสัมพันธ์ในภายหลังหมายความว่า integrand สามารถเป็นเอกพจน์ที่ขอบเขต integrand นั้นมีขอบเขต จำกัด ฉันถึงตอนนี้คำนวณอินทิกรัลนี้ด้วยการรวมเชิงตัวเลขที่ซ้อนกัน สิ่งนี้ประสบความสำเร็จ แต่ช้า ฉันค้นหาวิธีที่เหมาะสมกว่า (เร็วกว่า) เพื่อระบุถึงอินทิกรัลซึ่งอาจเป็นวิธีมอนติคาร์โล แต่ฉันต้องการหนึ่งที่ไม่ได้ใส่คะแนนในขอบเขตของโดเมนที่ไม่ใช่ลูกบาศก์และใช้ขีด จำกัด ของอินทิกรัลไม่ถูกต้อง การแปลงแบบอินทิกรัลสามารถช่วยสำหรับนิพจน์ทั่วไปนี้ได้หรือไม่? โปรดทราบว่าฉันสามารถแก้ไขสำหรับyเป็นฟังก์ชั่นของxและคำนวณได้ว่าฉันสำหรับฟังก์ชั่นน้ำหนักพิเศษบางอย่างW (F(x,y)yxI )W(x,y)


คุณช่วยอธิบายวิธีการที่คุณเคยใช้มาได้ไหม? คุณใช้รูทีนเฉพาะอย่างใดในลักษณะซ้อนกัน นอกจากนี้ภายในAคือรากของF ( x , y )อยู่ที่ขอบเขตเท่านั้นหรือไม่ F(x,y)0AF(x,y)
Pedro

GSL อัลกอริทึม QAGS: gnu.org/software/gsl/manual/html_node/... ขอบคุณสำหรับการแก้ไข (ไม่เห็นตัวเลือกสำหรับสมการเรียงพิมพ์)!
highsciguy

คำตอบ:


7

คำเตือน: ฉันเขียนวิทยานิพนธ์เอกของฉันเกี่ยวกับการสร้างพื้นที่สี่เหลี่ยมจัตุรัสปรับตัวดังนั้นคำตอบนี้จะลำเอียงอย่างรุนแรงต่อการทำงานของฉันเอง

QAGS ของ GSL เป็นผู้รวมQUADPACKเก่าและไม่แข็งแกร่งอย่างสมบูรณ์โดยเฉพาะอย่างยิ่งเมื่อมีภาวะเอกฐาน สิ่งนี้มักจะนำไปสู่ผู้ใช้ที่ต้องการความแม่นยำมากกว่าที่พวกเขาต้องการจริง ๆ ดังนั้นการรวมเข้าด้วยกันจึงค่อนข้างแพง

หากคุณกำลังใช้ GSL คุณอาจต้องการลองใช้รหัสของตัวเองCQUADตามที่อธิบายไว้ในบทความนี้ มันถูกออกแบบมาเพื่อรับมือกับความแปลกประหลาดทั้งที่ขอบช่วงเวลาและภายในโดเมน โปรดทราบว่าการประมาณข้อผิดพลาดนั้นค่อนข้างมีประสิทธิภาพดังนั้นขอเฉพาะตัวเลขให้มากที่สุดเท่าที่คุณต้องการ

สำหรับการบูรณาการ Monte-Carlo นั้นขึ้นอยู่กับประเภทของความแม่นยำที่คุณต้องการ ฉันยังไม่แน่ใจว่ามันจะทำงานใกล้กับเอกพจน์ได้ดีเพียงใด


ฉันจะดูที่นี่อย่างแน่นอนเพราะมันจะง่ายที่สุดที่จะใช้มัน ในความเป็นจริงฉันพบว่ารูทีน QAGS ไม่เสถียรสำหรับปัญหานี้
highsciguy

มีวิธีที่จะมีอิทธิพลต่อการเกิด 'GSL_EDIVERGE' หรือไม่ ดูเหมือนว่าจะปรากฏขึ้นสำหรับพารามิเตอร์บางอย่าง
highsciguy

@highsciguy: อัลกอริทึมส่งกลับ GSL_EDIVERGE เมื่อเชื่อว่าอินทิกรัลไม่ จำกัด หากคุณสามารถยกตัวอย่างที่ทำให้มันล้มเหลวได้
Pedro

มันเป็นการยากที่จะแยกกิจวัตรที่เรียบง่ายออกไปเล็กน้อยเนื่องจากมันฝังอยู่ในรหัสทั่วไปสำหรับอินทิกรัล n-dimensinal ฉันจะเห็น ... แต่สำหรับการแก้ไข y, 1 / sqrt (F (x, y)) ควรทำตัวเหมือน 1 / sqrt (x) เมื่อ x เข้าใกล้ศูนย์ของ F (x, y) ตั้งแต่ F (x, y) สามารถเขียนเป็นพหุนามใน x ได้ แต่อาจเป็นไปได้ว่าพฤติกรรม 1 / sqrt (x) เริ่มช้า อาจเป็นไปได้ว่าการลดลงของการรวมกันของตัวเลขไม่ดีเกินไป
highsciguy

1
@ highsciguy: ใช่นี่เป็นความคิดที่ไม่ดี กฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัสส่วนใหญ่สมมติว่าอินทิกรัลและมีระดับความนุ่มนวลและถ้าคุณตั้งให้เป็นศูนย์ ณ จุดใดจุดหนึ่งโดยพลการคุณกำลังแนะนำความไม่ต่อเนื่อง คุณจะได้ผลลัพธ์ที่ดีขึ้นมากถ้าคุณใช้ช่วงเวลาจริง!
Pedro

5

โดยทั่วไปวิธีการของมอนติคาร์โลอาจไม่สามารถแข่งขันกับการสร้างพื้นที่สี่เหลี่ยมจัตุรัสได้เว้นแต่ว่าคุณจะมีอินทิกรัลมิติสูงซึ่งคุณไม่สามารถจ่ายการระเบิดแบบ combinatorial ในพื้นที่สี่เหลี่ยมจัตุรัสด้วยมิติ

[0,1]nf(x)dnxnMMnkN=(kM)nk(2k1)e=O(h5)=O(M(2k1))

e=O(N(2k1)/n).
e=O(N1/2)
k>n/4+1/2

k8n=30M=1N=830คะแนนบูรณาการมากกว่าที่คุณเคยประเมินในชีวิต กล่าวอีกนัยหนึ่งตราบใดที่คุณสามารถประเมินคะแนนการรวมได้มากพอการสร้างพื้นที่สี่เหลี่ยมจัตุรัสในส่วนย่อยของโดเมนการรวมกลุ่มของคุณจะเป็นวิธีที่มีประสิทธิภาพมากกว่าเสมอ เป็นกรณีที่คุณมีอินทิกรัลมิติสูงซึ่งคุณไม่สามารถประเมินคะแนนการรวมกลุ่มได้แม้แต่แผนกเดียวอีกต่อไปที่ผู้คนใช้วิธีการมอนติคาร์โลแม้จะมีลำดับการรวมที่แย่ลง


1

ลองใช้การสร้างพื้นที่สี่เหลี่ยมจัตุรัสแบบทวีคูณแบบซ้อน (ดูการใช้งานOoura ) เทคนิคนี้ใช้การแปลงผันแปรที่ทำให้อินทิกรัลเปลี่ยนรูปและทำงานอย่างราบรื่นที่ขอบเขตและมีประสิทธิภาพมากสำหรับการจัดการเอกฐานที่ขอบเขต นอกจากนี้ยังมีรายการอ้างอิงที่ดีมากในพื้นที่สี่เหลี่ยมจัตุรัส DE บนเว็บไซต์ของเขา

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