Runge-Kutta และการนำ Datapoints กลับมาใช้ใหม่


11

ฉันกำลังพยายามใช้วิธี Runge-Kutta ลำดับที่สี่สำหรับการแก้ลำดับ ODE อันดับแรกใน Python เช่น) ฉันเข้าใจวิธีการทำงาน แต่พยายามเขียนอัลกอริธึมที่มีประสิทธิภาพซึ่งจะลดจำนวนครั้งที่f(x,y)ถูกคำนวณเนื่องจากค่าใช้จ่ายค่อนข้างสูง ฉันได้รับแจ้งว่ามีความเป็นไปได้ที่จะนำจุดข้อมูลมาใช้ใหม่ซึ่งคำนวณมาก่อนหน้านี้เมื่อคุณเพิ่มขั้นตอน แต่ไม่สามารถดูได้ ไม่มีใครรู้วิธีการทำเช่นนี้หรือเป็นไปไม่ได้?dydx=f(x,y)f(x,y)


วิจัย "ท่องจำ" คุณสามารถ "ห่อ" ของคุณf(x,y)เพื่อให้ผลลัพธ์ถูกจดบันทึก

2
@ S.Lott: คำว่า "memoization" โดยไม่มี "r"

1
@DietrichEpp: ถูกต้องทั้งหมด Mac OS X มีเครื่องตรวจตัวสะกดตัวใหม่ที่ก้าวร้าวและไม่มีความชำนาญด้านเทคนิคเลย

นี่เป็นระบบลำดับที่ 2 ที่จำลองด้วยวิธีการสั่งซื้อลำดับที่ 4 หรือไม่

ต่อไปนี้เป็นรายการโซลูชันทางเลือกที่มีขนาดใหญ่มาก: google.com/… หนึ่งในนั้นอาจเป็นประโยชน์

คำตอบ:


8

หากคุณกำลังจะจากyp_1 = f(x_1, y_1)ไปyp_2 = f(x_1+h, y_2)คุณจะต้องจุดกลาง:

K1 = f(x_1+h/2, y_1+h/2*yp_1)
K2 = f(x_1+h/2, y_1+h/2*K1)
K3 = f(x_1+h, y_1+h*K2)

x_2 = x_1 + h
y_2 = y_1 + h/6*(yp_1+2*K1+2*K2+K3)
yp_2 = f(x_2, y_2)

โดยทั่วไปแล้วจุดกึ่งกลางจะไม่มีประโยชน์ในขั้นตอนถัดไป เพราะ K1<> K2และ<>K3yp_2


4

N NN=4N

หากคุณต้องการใช้การประเมินฟังก์ชั่นที่ผ่านมาอีกครั้งคุณต้องใช้วิธีการหลายขั้นตอนเช่น Adams-Bashforth

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

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


ฉันควรจะเจาะจงมากขึ้นเล็กน้อย ดูรายละเอียดเพิ่มเติมจาก Butcher: Butcher, JC และ J. Wiley วิธีเชิงตัวเลขสำหรับสมการเชิงอนุพันธ์สามัญ Wiley Online Library, 2008 อ้างอิงที่ดีเยี่ยมสำหรับการแก้ปัญหา ODE และยังมีการพิสูจน์ไม่มีอยู่มากมายสำหรับวิธีการ RK (เช่นไม่มีคำสั่ง 5 วิธี Runge-Kutta ซึ่งใช้การประเมินฟังก์ชั่นเพียง 4 ครั้ง)
Reid.Atcheson

1
เพื่อความสมบูรณ์: การเรียกร้องของคุณจะไม่เป็นความจริงสำหรับ "ทั่วไปวิธี Runge-Kutta" แต่เพียงอย่างชัดเจนวิธี Runge-Kutta
David Ketcheson

อ๊ะ! คุณพูดถูกแล้วขอโทษด้วย
Reid.Atcheson

1

ฉันรู้ว่าคุณกำลังใช้วิธี Runge-Kutta เพื่อแก้ปัญหา ODE ของคุณ แต่ถ้าคุณต้องการนำค่าที่คำนวณได้เก่าของ f (x, y) มาใช้ใหม่คุณอาจต้องการพิจารณาวิธีการหลายขั้นตอนเช่น Adams-Bashforth หรือ Adams-Moulton วิธีการ แน่นอนว่าข้อเสียของวิธีการเหล่านี้คือคุณไม่สามารถใช้การปรับเวลาได้อย่างง่ายดาย


0

โปรดตรวจสอบวิธีการ "ฝังตัว": จุดมุ่งหมายในวิธีการ RK ประเภทนี้คือการมีสองวิธีที่มีคำสั่งซื้อที่แตกต่างกันซึ่งวิธีการสั่งซื้อขั้นสูงใช้การประเมินฟังก์ชั่นเดียวกับวิธีการสั่งซื้อขั้นต่ำ สิ่งนี้ช่วยให้การประเมินข้อผิดพลาดมีประสิทธิภาพมาก ดูหน้า 165 และเพิ่มเติมของ "การแก้สมการเชิงอนุพันธ์สามัญ I: ปัญหา Nonstiff" โดย Hairer, Norsett และ Wanner ตัวอย่างทั่วไปคือวิธีการสั่งซื้อ Fehlberg 7 (8)

นอกจากนี้ถ้าคุณกำลังมองหาที่แก้ ODEs ในหลามตรวจสอบassimulo ฉันเล่นกับแพ็คเกจนี้มาสองสามสัปดาห์แล้วและมีความสุขมาก

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