สมการเชิงอนุพันธ์ในภาษา C++
บทความต่อไปนี้อธิบายวิธี การที่มีประสิทธิภาพที่สุดวิธีหนึ่งในการแก้สมการเชิงอนุพันธ์ ฉันจะแก้สมการเชิงอนุพันธ์ อันดับ
ที่หนึ่งและอันดับสองแบบง่ายๆ โดยใช้วิธี Runge Kuttaซึ่งฉันได้กล่าวถึงที่นี่ ด้วย
ซอร์สโค้ดสำหรับบทความนี้คุณจะพบในGitHub ของ ฉัน
วิธีรังเง-คุตตะ
วิธีต่อไปนี้เป็นวิธีที่ใช้บ่อยที่สุดในการแก้สมการเชิงอนุพันธ์สามัญ วิธี Runge-Kutta มีประสิทธิภาพดีกว่าวิธีเชิงตัวเลขอื่นๆ เนื่องจากนำไปใช้ได้ง่าย แม่นยำ และมักจะมีความเสถียร และสามารถแก้ไขได้ด้วยการระบุค่าเริ่มต้นหนึ่งค่า
มีเมธอดลำดับ n ซึ่งระบุจำนวนครั้งที่เราคำนวณฟังก์ชัน f (t, x(t)) อย่างไรก็ตาม วิธีที่นิยมมาก ที่สุดและอธิบายไว้ด้านล่างคือวิธีลำดับที่สี่
อย่างที่คุณเห็น ในแต่ละขั้นตอนของเวลา เราต้องหาค่าสัมประสิทธิ์ k1, k2, k3 และ k4
ส่วนที่สำคัญที่สุดในการแก้สมการเชิงอนุพันธ์โดยใช้วิธี Runge-Kutta คือการเข้าใจวิธีการปรับใช้สมการ
ฉันสามารถแสดงตัวอย่างรหัสจำลองซึ่งฉันหวังว่าจะให้สัญชาตญาณแก่คุณ
อย่างที่คุณเห็น มีสมการเชิงอนุพันธ์สองสมการของลำดับที่หนึ่ง ตอนนี้คุณต้องสร้างสองฟังก์ชันที่คืนค่าด้านซ้ายของสมการเชิงอนุพันธ์
ที่นี่เราแก้ปัญหาออสซิลเลเตอร์ของ Van der Pol
สามารถอธิบายวิธีแก้ปัญหาได้ดังนี้
สำหรับสมการเชิงอนุพันธ์อันดับสองคุณต้องเพิ่มสมการด้วย โดยที่คุณแก้อนุพันธ์อันดับหนึ่ง
สามารถอธิบายวิธีแก้ปัญหาได้ดังนี้
การพล็อตต้องใช้ไฟล์ส่วนหัวซึ่งจะต้องอยู่ในโฟลเดอร์เดียวกับ cpp ของคุณ (ไฟล์ที่คุณสามารถโคลนจากที่เก็บของฉัน)
สามารถคอมไพล์โปรแกรมได้ดังนี้
//compile
g++ my_prog.cpp -o my_prog -I/usr/include/python3.8 -lpython3.8//
//run
./my_prog
//folder tree
├── my_prog
├── my_prog.cpp
├── matplotlibcpp.h





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)