วิธี ODE ที่เหมาะสมที่สุดสำหรับการประเมิน RHS จำนวนคงที่


14

ในทางปฏิบัติรันไทม์ของการแก้ IVP คือ มักจะครอบงำโดยระยะเวลาของการประเมินทางด้านขวามือ (RHS) เดอะฉให้เราสมมติว่าการดำเนินการอื่น ๆ ทั้งหมดนั้นทันที (เช่นไม่มีค่าใช้จ่ายในการคำนวณ) หากรันไทม์โดยรวมสำหรับการแก้ IVP ถูก จำกัด แล้วนี้จะเทียบเท่ากับการ จำกัด จำนวนของการประเมินผลของบาง{N}x ( t 0 ) = x 0 f f N N

x˙(t)=f(t,x(t)) for t[t0,t1]
x(t0)=x0
ffNN

เราสนใจเฉพาะค่าสุดท้ายเท่านั้นx(t1)

ฉันกำลังมองหาผลลัพธ์ทางทฤษฎีและการปฏิบัติที่ช่วยให้ฉันเลือกวิธี ODE ที่ดีที่สุดในการตั้งค่าเช่นนั้น

ตัวอย่างเช่นถ้าเราสามารถแก้ IVP โดยใช้สองขั้นตอนออยเลอร์ที่ชัดเจนหรือความกว้างหนึ่งขั้นตอนโดยใช้วิธีจุดกึ่งกลาง ไม่ชัดเจนทันทีสำหรับฉันว่าอันไหนที่เป็นที่นิยม สำหรับมีขนาดใหญ่ขึ้นแน่นอนว่าเราสามารถคิดถึงวิธีการหลายขั้นตอนได้เช่นกันแผนการ Runge-Kutta ที่ทำซ้ำเป็นต้น( t 1 - t 0 ) / 2 t 1 - t 0 NN=2(t1t0)/2t1t0N

สิ่งที่ฉันกำลังมองหาคือผลลัพธ์ที่คล้ายกับกฎที่มีอยู่แล้วตัวอย่างเช่นสำหรับกฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัส: เราสามารถเลือก weightsและคะแนนที่เกี่ยวข้องเช่นนั้นกฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัสเป็นที่แน่นอนสำหรับการพหุนามทั้งหมดดังกล่าวว่า1{ w i } { x i } n i = 1 w ฉัน g ( x i ) g d e g ( g ) 2 n - 1n{wi}{xi}i=1nwig(xi)gdeg(g)2n1

ดังนั้นฉันกำลังมองหาขอบเขตบนหรือล่างบนความถูกต้องทั่วโลกของวิธีการ ODE รับจำนวน จำกัด ของการประเมินผลที่ได้รับอนุญาตของ RHS ฉไม่เป็นไรถ้าขอบเขตเก็บไว้เฉพาะบางคลาสของ RHS หรือก่อให้เกิดข้อ จำกัด เพิ่มเติมเกี่ยวกับการแก้ปัญหา (เช่นเดียวกับผลลัพธ์ของกฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัสซึ่งเก็บสำหรับพหุนามในระดับหนึ่งเท่านั้น)xfx

แก้ไข: ข้อมูลพื้นหลังบางส่วน: นี่เป็นแอปพลิเคชันแบบเรียลไทม์ยากเช่นผลลัพธ์ต้องพร้อมใช้งานก่อนถึงวันครบกำหนดที่ทราบ ดังนั้นข้อ จำกัด เกี่ยวกับจำนวนการประเมิน RHSเป็นปัจจัยด้านต้นทุน โดยทั่วไปแล้วปัญหาของเราจะค่อนข้างแข็งและเล็กNx(t1)N

แก้ไข 2: น่าเสียดายที่ฉันไม่มีข้อกำหนดเวลาที่แน่นอน แต่ก็ปลอดภัยที่จะสมมติว่าจะค่อนข้างเล็ก (แน่นอน <100 ใกล้กับ 10 มาก) ด้วยความต้องการแบบเรียลไทม์เราต้องค้นหาการแลกเปลี่ยนระหว่างความแม่นยำของแบบจำลอง (ด้วยแบบจำลองที่ดีกว่าซึ่งนำไปสู่เวลาดำเนินการที่ยาวนานขึ้นของ RHS และด้วยเหตุนี้ถึงต่ำกว่า) และความแม่นยำของวิธี ODE (ด้วยวิธีที่ดีกว่า ค่าของ )N N NNNN


ความสอดคล้องตามปกติของขั้นตอนวิธี Runge-Kutta คงที่กับวิธี Newton-Cotes นำไปใช้กับกรณีของวิธี RK ที่ใช้กับ IVP ; เช่นการใช้วิธีการคลาสสิกที่สี่เพื่อ IVP ที่เทียบเท่ากับการดำเนินการปกครองของซิมป์สันใน(x) f ( x )y=f(x)f(x)
JM

@JM: ฉันรู้ว่า ฉันตั้งใจจะใช้กฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัสเป็นตัวอย่างของการอธิบายความแม่นยำของวิธีการเชิงตัวเลขสำหรับชุดอินพุตบางชุดเมื่อจำนวนการประเมินฟังก์ชันมี จำกัด นอกเหนือจากที่ฉันสนใจ ODE "ของจริง" คือที่ไม่ลดลงในการรวมมาตรฐาน
Florian Brucker

1
นี่คือสิ่งที่น่าสนใจมากขึ้น ตอนนี้ตัวเลขด้วยตัวมันเองไม่ได้มีความหมายอะไรเลย สิ่งที่อาจจะเป็นประโยชน์คือการรู้ว่าที่คือความยาวของช่วงเวลาของการรวมกลุ่มและคือค่าคงที่ของ Lipschitzด้วยความเคารพxสิ่งนี้จะบอกเราว่าปัญหานั้นแข็งจริงเพียงใด ผู้สมัครที่น่าจะเป็นวิธี BDF ลำดับที่ 2 λ N / T T λ f xNλN/TTλfx
David Ketcheson

@DavidKetcheson: ฉันสนใจวิธีการทั่วไปในการเลือกวิธีที่เหมาะสมสำหรับปัญหาที่ระบุมากกว่าวิธีที่เหมาะสมที่สุดสำหรับปัญหาเฉพาะ เรามีโมเดลจำนวนมากที่แตกต่างกันไปตามข้อกำหนดความแข็งและเวลา
Florian Brucker

คุณบอกว่ามีราคาแพงมากในการประเมิน คุณสามารถคำนวณยาโคบเบียนได้ทั้งหมดหรือไม่? การประมาณบางอย่างที่สามารถแก้ไขความฝืดหลักการได้ คุณไม่ได้อยู่ในสภาพที่ดีถ้าปัญหาของคุณแข็งทื่อมากและคุณไม่มีทางแก้ไขได้ f
Jed Brown

คำตอบ:


7

ผมคิดว่าการอ้างอิงที่สำคัญในการตอบคำถามของคุณเป็นกระดาษนี้โดยโฮเชยาและ Shampine ตอนนี้ฉันจะให้พื้นหลัง

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

S={zC:|P(z)|1}.

ที่นี่เป็นฟังก์ชันความเสถียรของวิธี ดูเช่นข้อความของ Hairer และ อัล เงื่อนไขที่จำเป็นสำหรับเสถียรภาพคือโดยที่อยู่เหนือค่าลักษณะเฉพาะของ jacobian ของและคือขนาดขั้นตอน นี่ไม่ใช่เงื่อนไขที่เพียงพอสำหรับปัญหาที่ไม่เชิงเส้น แต่มักจะเป็นกฎง่ายๆและใช้ในทางปฏิบัติλ h S λ f hP(z)λhSλfh

สำหรับการรักษาที่กว้างขวางของปัญหาในการหาวิธีการ (อย่างชัดเจน) ที่ช่วยให้ขั้นตอนขนาดใหญ่ที่มีความเสถียรให้ดูบทความนี้ของฉันใน polynomials ความมั่นคงและคนนี้ในการเพิ่มประสิทธิภาพของวิธีการ Runge-Kutta สำหรับการจำลองของเหลวอัด

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

มาตรการทางทฤษฎีสองอย่างเป็นกุญแจสำคัญในการทำนายประสิทธิภาพความแม่นยำ อันดับแรกคือลำดับความถูกต้องของวิธีซึ่งอธิบายอัตราที่ข้อผิดพลาดเข้าใกล้ศูนย์เมื่อขนาดขั้นตอนลดลง ประการที่สองคือดัชนีประสิทธิภาพความแม่นยำ (ดูกระดาษของ Hosea และ Shampine ที่เชื่อมโยงในประโยคแรกข้างต้น) ซึ่งคำนึงถึงค่าคงที่ที่ปรากฏในข้อกำหนดข้อผิดพลาดและอนุญาตให้ทำการเปรียบเทียบระหว่างวิธีการของคำสั่งเดียวกัน

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


ขอขอบคุณ. กระดาษของโฮเชยาและแชมพินนั้นน่าสนใจมาก คุณรู้จักผลลัพธ์ที่คล้ายกันสำหรับปัญหาแข็งหรือไม่ ฉันรู้ว่ามักจะใช้วิธีการโดยนัยสำหรับสิ่งเหล่านั้น แต่สิ่งเหล่านี้ไม่มีข้อ จำกัด เกี่ยวกับจำนวนของการประเมิน RHS ดังนั้นพวกเขาจึงไม่ค่อยได้ใช้ในกรณีของฉัน
Florian Brucker

ฉันไม่รู้อะไรแบบนี้สำหรับปัญหาที่แข็งทื่อ แต่ฉันสงสัยว่ามีบางสิ่งอยู่ อย่างที่คุณพูดคำถามนั้นละเอียดกว่าเมื่อใช้วิธีการทางอ้อม วิธีการหนึ่งอาจใช้วิธี Rosenbrock ซึ่งจัดการกับปัญหาแข็งได้ดี แต่มีการประเมิน RHS จำนวนคงที่
David Ketcheson

6

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

ฉันจะมุ่งเน้นไปที่วิธีการที่ชัดเจนเนื่องจากกรณีโดยนัยมีความชัดเจนน้อยกว่าจำนวนการประเมิน RHS ที่คุณจะต้องใช้ .. ทั้งหมดขึ้นอยู่กับวิธีที่คุณตัดสินใจที่จะแก้ปัญหาระบบที่เกิดขึ้น

สำหรับระบบที่ไม่แข็ง:

มีข้อ จำกัด ขั้นตอนสำหรับวิธี Runge-Kutta ที่ชัดเจนซึ่งบอกว่าจำเป็นต้องใช้จำนวนขั้นตอน (การประเมิน RHS) เพื่อให้ได้ลำดับความแม่นยำที่แน่นอน หลังจากลำดับที่สี่จำนวนขั้นตอนเกินกว่าลำดับความถูกต้องและความไม่เท่าเทียมยังคงเพิ่มขึ้น หนังสือ ODE เล่มใหญ่ของพ่อค้าเนื้อ: http://books.google.co.th/books/about/Numerical_Methods_for_Ordinary_Different.html?id=opd2NkBmMxsC

ทำงานที่ดีอธิบายบางส่วนของการพิสูจน์ 'ไม่มีอยู่' เหล่านี้ได้อย่างไร

ตัวอย่างกฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัสของคุณจะนำไปสู่วิธีพิมพ์แบบหลายขั้นตอนเช่น Adams-bashforth หรือวิธีที่เรียกว่าวิธีแก้ไขสเปกตรัมแบบเลื่อนเวลาออกไป สำหรับ adams-bashforth คุณจะต้องมีการประเมิน RHS เพียงหนึ่งขั้นตอนต่อหนึ่งขั้นตอน แต่เนื่องจากขอบเขตความเสถียรมีขนาดเล็กโดยทั่วไปสำหรับวิธีการเหล่านี้คุณจึงต้องทำงานในปริมาณที่เท่ากันในแง่ของการประเมิน RHS เป็นวิธี Runge-Kutta ใบสั่ง.

นี่คือกระดาษในการแก้ไขการรอการตัดบัญชีสเปกตรัม:

https://www.google.com/search?q=spectral+deferred+correction&aq=f&oq=spectral+deferred+correction&aqs=chrome.0.57j0l2j62.3336j0&sourceid=chrome&ie=UTF-8

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

สำหรับระบบที่แข็ง:

มีการปรับเวลาให้เหมาะสม แต่มีผลทางทฤษฎีที่แม่นยำเกี่ยวกับความดีของสิ่งเหล่านี้ที่ได้รับจะถูก จำกัด ด้วยกรณีง่าย ๆ บางอย่าง (และแม้แต่ที่กลายเป็นงานที่ไม่สำคัญ) ผลลัพธ์มาตรฐานสามรายการกล่าวว่าสำหรับวิธี Runge-Kutta ด้วยระยะ : แกนจริงเชิงลบมากที่สุดที่สามารถรวมไว้ในขอบเขตความมั่นคงของมันคือช่วงเวลาของความยาว2 S 2แกนจินตภาพที่สุดที่มันสามารถมีได้คือช่วงความยาวS - 1และวงกลมที่ใหญ่ที่สุดสัมผัสกับแกนจินตภาพที่มันสามารถมีมีรัศมีS (ทั้งหมดเหล่านี้เป็นพิเศษร่วมกันเช่นกัน)S2S2S1S


2
อาจเกิดขึ้นได้ว่าการใช้ขั้นตอนตัวแปร (หรือแม้แต่ลำดับของตัวแปร) อาจมีประสิทธิภาพมากกว่าวิธีการขั้นตอนคงที่ doggedly ตัวอย่างหนึ่งอาจลองใช้วิธีการประมาณค่าเช่น Bulirsch-Stoer: ทำการประเมินสองสามขั้นตอนในบางขั้นตอนจากนั้นสร้าง (ประมาณการ) ที่แม่นยำยิ่งขึ้นจากผลลัพธ์ของขั้นตอนเหล่านั้น
JM

จริง ตามความเป็นจริงแล้ววิธีการที่ดีที่สุดหลายวิธีนั้นมีความเทียบเท่ากับรุ่นขั้นตอนที่แปรผันของจังหวะเวลาอื่น ตัวอย่างเช่น Runge-Kutta-Chebshev สามารถมองเห็นเป็นออยเลอร์ไปข้างหน้าที่ใช้กับขั้นตอนเวลาตัวแปรเป็นจุด Chebyshev
Reid.Atcheson

@JM: แน่นอน แต่มีวิธีที่จะตัดสินความถูกต้องของวิธีการเหล่านี้ wrt จำนวนการประเมิน RHS นอกเหนือจากการทดลองเชิงตัวเลข (ซึ่งจะมีส่วนร่วมมากให้วิธีที่เป็นไปได้จำนวนมาก)?
Florian Brucker

@ Florian ไม่ใช่คนทั่วไป คุณเคยได้ยินสมการของ Lorenz ฉันเข้าใจไหม
JM

1
@JM: ใช่ :) นั่นเป็นเหตุผลที่ฉันพูดถึงตัวอย่างการสร้างพื้นที่สี่เหลี่ยมจัตุรัสโดยที่ความแม่นยำถูกวัดได้ที่ส่วนย่อย (พหุนาม) ของพื้นที่ปัญหาดั้งเดิม ฉันยินดีกับผลลัพธ์ที่ได้ผลกับปัญหาบางส่วนเท่านั้น
Florian Brucker

3

1014f(x)

มีข้อยกเว้นแน่นอน (ระบบที่มีขนาดใหญ่มากระบบที่แข็งมาก) แต่ความเชื่อมั่นทั่วไปในชุมชนคือคำถามของการออกแบบตัวแก้ปัญหา ODE สำหรับระบบ "มาตรฐาน" นั้นเป็นวิธีที่แก้ไขได้ ดังนั้นฉันคิดว่าคำถามที่คุณโพสต์ไม่ใช่คำถามที่น่าสนใจมาก - มันตอบโจทย์องค์ประกอบของการออกแบบตัวแก้ปัญหา ODE ที่ไม่มีความสำคัญอีกต่อไป สิ่งนี้อาจอธิบายถึงการขาดวรรณกรรมในเรื่อง


+1 เมื่อใดก็ตามที่ใครบางคนถามเกี่ยวกับนักแก้ปัญหา ODE ที่มีประสิทธิภาพฉันแค่คิดว่าพวกเขาสนใจระบบ ODE ขนาดใหญ่ที่มาจากการแยกย่อยกึ่ง PDE หรือปัญหาร่างกาย n ขนาดใหญ่
David Ketcheson

คุณช่วยอธิบายสิ่งนี้เกี่ยวข้องกับคำถามของฉันได้อย่างไร ฉันไม่เห็นการเชื่อมต่อเนื่องจากฉันสนใจในกรณีที่การประเมินf(x)ไม่ฟรี แต่ค่อนข้างแพงจนจำนวนการประเมินมี จำกัด
Florian Brucker

@DavidKetcheson: นี่ไม่ใช่กรณีที่นี่ มันค่อนข้างที่เรามีข้อกำหนดด้านเวลาที่เข้มงวดมาก (ฮาร์ดเรียลไทม์) บนฮาร์ดแวร์ที่อ่อนแอ (อุปกรณ์ฝังตัว) ระบบ ODE นั้นมีขนาดค่อนข้างเล็ก
Florian Brucker

NNNN

NNN<1000

1

O(dim3)O(dim2)

ดังนั้นจุดแรกคือการตรวจสอบว่า RHS ของคุณแพงกว่าพีชคณิตเชิงเส้นพื้นฐานหรือไม่

จุดที่สอง: เป็นที่รู้จักกันดีในวรรณคดีว่าวิธีแก้ปัญหาแบบ "แพง" (เช่นวิธี RK ชัดเจน) บางครั้งทำงานได้เร็วกว่าวิธีที่ "ถูกกว่า" (วิธีมัลติสเตปแบบชัดเจน)

สรุปแล้วฉันคิดว่าคุณไม่ควรพิจารณาเฉพาะการประเมิน RHS เท่านั้น


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