แก้สมการเชิงอนุพันธ์ (Differential Equations)ด้วย DSolve[ ]
เราสามารถใช้ DSolve[ ] แก้สมการเชิงอนุพันธ์ได้มากมาย
ยกตัวอย่างเช่น เราจะแก้สมการ ของ Simple Harmonic Motion y''[t] == -y[t]
โดยเราต้องบอก DSolve[ ] ว่า ฟังก์ชันคือ y[t] และตัีวแปรคือ t
คำตอบที่ได้จะมีค่าคงที่เช่น C[1], C[2], ..., C[k] ถ้าสมการมีคำตอบหลายตัว
In[19]:=
Out[19]=
ถ้าเรามีค่าเริ่มต้นเราก็ใส่ไว้รวมกับสมการได้เลย
In[20]:=
Out[20]=
นอกจากนี้ เราสามารถใส่ Boundary Conditions ได้ด้วยเช่น y'[0]=0 และ y[1]=1
In[21]:=
Out[21]=
เราสามารถแก้หลายๆสมการพร้อมๆกันได้
ในที่นี้เราสนใจ x1[t] และ x2[t] โดยที่สมการความสัมพันธ์เป็นดังนี้
x1''[t] = -x1[t] + (x2[t]-x1[t])
x2''[t] = (x1[t]-x2[t]) - x2[t]
x1[0] = x1'[0] = 0
x2[0]=1, x2'[0]=0
เราจะเก็บคำตอบไว้ใน ตัวแปรชื่อ soln
In[22]:=
Out[22]=
soln เก็บคำตอบเราไว้ดังคาด
In[23]:=
Out[23]=
เราสามารถดูกราฟของคำตอบได้ด้วยคำสั่งรูปแบบ Plot[Evaluate[...]...] หรือ ParametricPlot[Evaluate[...]... ]
x1[t] /. soln หมายความว่า ถ้าพบค่า x1[t]ที่ถูกกำหนดไว้ใน soln ให้นำมาใช้ ในที่นี้คือ
In[24]:=
Out[24]=
In[25]:=
Out[25]=
In[26]:=
Out[26]=
ตัวอย่างต่อไปเราจะแก้สมการของ projectile motion ที่ยิงจาก (0,0) ด้วยความเร็วต้น Vi และมุม theta
เราจะเก็บคำตอบไว้ใน projsoln
In[27]:=
Out[27]=
แทนค่า Vi = 100, theta = Pi/4, g = 9.8
In[28]:=
Out[28]=
เราวาดกราฟ (x[t],y[t]) ด้วย ParametricPlot[ ]
In[29]:=
Out[29]=
Created by Mathematica (October 4, 2005)