วิธี ที่ ลูก ตุ้ม สอน คุณ
คุณไม่ต้องมีปริญญาวิชาคณิต เพื่อเข้าใจนักแก้ปัญหา ODE. คุณต้องการลูกตุ้ม หน้าจอ และ 20 นาที. นี่คือวิธีที่ออยเลอร์ อาร์เค 4 และวิธีการปรับตัวได้ผล ด้วยรหัสที่แท้จริง.
On this page
เริ่ม ด้วย สิ่ง ที่ คุณ เห็น
จับน้ําหนักจากเชือก. ดึงไปด้านนึง. ปล่อยนะ. มันแกว่ง.
คุณเพิ่งสร้างระบบที่ควบคุมโดยสมการอนุพันธ์
dθ/dt = ω dω/dt= -(g/L) ไซน์ (θ)
○ คือ มุม. ○ คือ ความเร็ว ของ อาร์กติก. g คือแรงโน้มถ่วง (9.81 m/s2). L คือความยาวเส้น. เส้นสองเส้นนี้บอกว่า การเปลี่ยนมุมด้วยอัตราเท่ากับความเร็ว และความเร็วเปลี่ยนแปลงด้วยอัตราที่ขึ้นอยู่กับแรงโน้มถ่วง ความยาว และมุมปัจจุบัน.
ปัญหา: เราไม่สามารถแก้สมการนี้ได้. sin(θ) ทําให้ไม่เป็นเชิงเส้น. มันไม่มีสูตรที่ให้ θ เมื่อใดก็ตามที่ t. เราประมาณ -- เราก้าวไปข้างหน้าในจํานวนน้อย คํานวณสถานะต่อไปจากรัฐปัจจุบัน.
นั่นคือสิ่งที่นักแก้ปัญหา ODE ทํา. และมีวิธีที่ดีกว่านี้และแย่ลง.
วิธี อูล เลอ ร์: เป็น ที่ นิยม แต่ เป็น ที่ นิยม
แนวคิดที่ง่ายที่สุด: ถ้าผมรู้จักรัฐตอนนี้ และผมรู้อัตราการเปลี่ยนแปลง ผมสามารถประเมิน รัฐได้ทีละขั้น.
next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt
นี่คือวิธีการของออยเลอร์. มันก็เหมือนกับการเดินผ่านหมอก คุณสามารถเห็นก้าวหนึ่งก้าวข้างหน้า. ในรหัส:
function euler(f, t, y, dt) {
const dy = f(t, y);
return [
y[0] + dt * dy[0],
y[1] + dt * dy[1]
];
}
ปัญหา:วิธีการของออยเลอร์ถูกต้อง. นั่นหมายความว่าถ้าคุณลดขนาดขั้น คุณลดความผิดพลาด. สําหรับ ลูก ตุ้ม ความ ผิด พลาด นี้ มี มาก ขึ้น — ลูก ตุ้ม ที่ ถูก จําลอง แล้ว ค่อย ๆ ได้ รับ พลัง งาน และ การ แกว่ง จะ กว้าง ขึ้น และ กว้าง ขึ้น. หลังจากไม่กี่นาที มันหมุนเป็นวงกลมเต็ม. ลูกตุ้มของจริง ไม่เคยทําแบบนี้.
อาร์เค4 : ม้างาน (RK4)
1901 คาร์ล รันจ์ และ มาร์ติน คุตตา ได้ตีพิมพ์วิธีการที่ดีกว่า ในปี ค.ศ. แทนที่จะดูที่อัตราการเปลี่ยนแปลงหนึ่งครั้งต่อก้าว ลองดู 4 ครั้ง:
- วัดความชันในตอนต้นของขั้นตอน k1
- กึ่งกลางโดยใช้ k1, วัดความชันตรงนี้ ○ k2
- กึ่งกลางโดยใช้ k2, วัดอีกครั้ง ○ k3
- ก้าวไปยังตอนจบโดยใช้ k3, วัดได้อีกครั้งหนึ่ง k4
- การรวม: เฉลี่ยน้ําหนัก (k1 + 2k2 + 2k3 + k4) / 6
นี่เป็นลําดับที่สี่ที่ถูกต้อง. ลดขนาดขั้นและความผิดพลาดลดลงด้วยปัจจัยที่ 16. ลูก ตุ้ม เก็บ พลังงาน ไว้ อย่าง ถูก ต้อง สําหรับ การ หมุน หลาย พัน ครั้ง.
คําอ้างนี้คุ้มค่าที่จะตรวจสอบ มากกว่าการเชื่อ. ด้านล่าง, ทั้งสองวิธี
รวม y′ = y จาก 0 ถึง 1 — โดยคําตอบที่แน่นอนคือ e -- สี่ขั้น
ขนาด. การแยกขั้นตอนความคลาดเคลื่อนของออยเลอร์ โดยประมาณ 2 และ RK4 โดยประมาณ 16,
ซึ่งเป็นสิ่งที่ลําดับแรกและลําดับที่สี่หมายถึง.
function rk4(f, t, y, dt) {
const k1 = f(t, y);
const k2 = f(t + dt/2, [y[0] + dt/2 * k1[0], y[1] + dt/2 * k1[1]]);
const k3 = f(t + dt/2, [y[0] + dt/2 * k2[0], y[1] + dt/2 * k2[1]]);
const k4 = f(t + dt, [y[0] + dt * k3[0], y[1] + dt * k3[1]]);
return [
y[0] + (dt/6) * (k1[0] + 2*k2[0] + 2*k3[0] + k4[0]),
y[1] + (dt/6) * (k1[1] + 2*k2[1] + 2*k3[1] + k4[1])
];
}
นี่คือวิธีที่ PinePaper ใช้สําหรับลูกตุ้ม สปริง-มาส และแบบจําลองแวน เดอ โพล. มันเป็นวิธีเดียวกันที่ใช้ในการคํานวณเส้นทางอวกาศ. 22 บรรทัดของรหัส.
ทําไม เรื่อง นี้ จึง สําคัญ
ลูก ตุ้ม เป็น ตัว อย่าง การ สอน. แต่เทคนิคเดียวกัน ก้าวไปข้างหน้า วัด ถูกต้อง ใช้ได้ทุกที่ที่มีอัตราการเปลี่ยนแปลง:
- ~ การเพิ่มขึ้นของประชากร~: dx/dt = rx(1 - x/K). การเติบโตแบบล็อกเอาต์ ด้วยความจุ. ตัวแก้ไขเหมือนกัน.
- ปฏิกิริยาทางกาย: ความเข้มข้นเปลี่ยนแปลงตามสัดส่วนที่เพิ่มขึ้น. ตัวแก้ไขเหมือนกัน.
- ** เครือข่ายภายนอก*: การสืบเชื้อสายคือ ODE ที่ถูกแก้ไขไปแล้ว. แต่ ละ ขั้น ของ การ ฝึก อบรม คือ การ ก้าว ไป ตาม ผิว นอก ของ การ สูญ เสีย.
- ดอกเบี้ยทบต้นอย่างต่อเนื่อง ผ่าน dy/dt= ry. การเติบโตของค่า x เป็นค่า ODE ที่ง่ายที่สุด.
- เวลาของการแสดง ~: การปล่อยเส้นโค้ง เป็นวิธีแก้ปัญหาของ สปริง-แดมเปอร์ โอดีกส์. การปล่อยก๊าซใน CSS เป็นแบบจําลองทางกายภาพ.
คณิตศาสตร์ไม่เปลี่ยนแปลง. โดเมนมี. นั่นคือสิ่งที่ทําให้มันเป็นภาษา ไวยากรณ์ เดียว กัน นี้ พรรณนา ถึง การ นับ แกะ, การ เหวี่ยง ลูก ตุ้ม, และ การ ฝึก ระบบ ประสาท.
ลอง เอง สิ
เปิด PinePaper และเลือกเครื่องกําเนิดพลังงานอัตโนมัติของระบบ. เลือก "ลูกตุ้ม" วงสวิง. ตอนนี้เปลี่ยนพารามิเตอร์:
- แรง โน้ม ถ่วง เพิ่ม ขึ้น
- เพิ่มความยาวของแท่ง
- เริ่มที่มุมที่มากขึ้น ○ ดูวิธีการที่ระยะเวลาเพิ่มขึ้น (ไม่ linelinear ผลกระทบที่ตําราการประมาณมุมเล็ก)
ทุกการเปลี่ยนแปลงที่คุณทําคือการวัด. คุณเปลี่ยนพารามิเตอร์แล้วสังเกตผล. RK4 แก้โจทย์ซ้ํา 30 เฟรมต่อวินาที และลูกตุ้มแสดงให้คุณเห็นว่าสมการทํานายอย่างไร.
นั่นคือประเด็นทั้งหมด. คณิตศาสตร์คือการวัด. PinePaper ทําให้มองเห็นได้.
อ้างอิง
- บุชเชอร์ เจ.ซี. (2016). (3 ง.). ไวลี่ย์.
- ดอร์มันด์ เจ.อาร์. เจ้าชาย พี.เจ. (1980). ครอบครัวของ Ragge-Kutta Culti. ♪Journal of Commutational and ประยุกต์ mathematics*, 6(1) 19-26.
- ออยเลอร์ แอล. 1768) (พ.ศ. ♪ institutiveum calculi myis ♪โวล. 1. อิมเพนซิส อะคาเดมี อิมพีเรียลส์ ไซไนเทียรัม.
- ผม, อี., น. น.ส., เอส. (1993). ♪Solution lineal Entertainial Equation I: Nonstif first ปัญหา* (2th Ed.). สปริงเกอร์.
- คุต ตา ดับเบิล ยู. (1901). Beitrag suer naherungsweisen intrieved diviewer diviewialrichungen. Zétchrift fur mathematatic und Physik, 46, 435-453.
- นิวตัน ไอ. 1687) (พ.ศ. ♪ Philosophoria naris Principia คณิตศาสตร์*. Joseph Sather.
- รันจ์ ซี. 1895) (พ.ศ. 2561 เสียชีวิต Numerische Aifilosung ฟอน ดิฟเฟิลเกิลโกเดน. * มามาเมติเซ แอนนาเลน* 46(2)), 167-178.
- สทรอเกซ เอส. (2015). ♪โนนไดนามิกส์เชิงเส้นและ chaos*(nd Ed.). เวสต์วิว เพรส.
PinePaper (ODE) ของ ODE (ODE) ครอบคลุมออยเลอร์, อาร์เค 4 และปรับตัว ดอร์มันด์-เจ้าหญิงอาร์เค 45 ได้ประมาณ 200 บรรทัด พ.ศ. ลองจําลองลูกตุ้มฟรีที่ [กระดาษพินินทร์/editor] (/editor).
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor