แก้สมการ Recurrence ด้วย RSolve[ ]

เราสามารถแก้สมการ recurrence ได้ด้วย RSolve[ ]
ในตัวอย่างต่อไป เราจะหาสูตรของเลข Fibonacci f[n] ที่มีคุณสมบัติ f[0]=f[1]=1 และ f[n] = f[n-1]+f[n-2]

In[30]:=

fibosoln = RSolve[{f[t] f[t - 1] + f[t - 2], f[1] 1, f[0] 1}, f[t], t]

Out[30]=

{{f[t] 1/10 (5 (1/2 - 5^(1/2)/2)^t - 5^(1/2) (1/2 - 5^(1/2)/2)^t + 5 (1/2 + 5^(1/2)/2)^t + 5^(1/2) (1/2 + 5^(1/2)/2)^t)}}

เราพยายามจัดรูปคำตอบให้ดูง่ายขึ้น

In[31]:=

Simplify[fibosoln]

Out[31]=

{{f[t] 1/10 (-(1/2 (1 - 5^(1/2)))^t (-5 + 5^(1/2)) + (1/2 (1 + 5^(1/2)))^t (5 + 5^(1/2)))}}

ใช้คำตอบมาหาเลข Fibonacci 20 ตัวแรก

In[32]:=

Table[Expand[f[t]/.fibosoln[[1]]], {t, 0, 20}]

Out[32]=

{1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946}

ตัวอย่างต่อไปคือการใช้ RSolve[ ] หาจำนวนการเปรียบเทียบโดยเฉลี่ยของ QuickSort เมื่อมีข้อมูล n ชิ้น
จะเห็นได้ว่าเมื่อ n มีขนาดใหญ่ จำนวนการเปรียบเทียบโดยเฉลี่ยของ QuickSort จะมีการเติบโตเหมือนn log_2n

In[33]:=

RSolve[{s[2n]  2 s[n] + n, s[1] 1}, s[n], n]

Out[33]=

{{s[n]  (2 n Log[2] + n Log[n])/(2 Log[2])}}


วันนี้ขอจบแค่นี้ก่อน  หวังว่าคุณจะพบว่า Mathematica นั้นมีประโยชน์ในการศึกษาทางด้านวิทยาศาสตร์นะครับ ตอนผมเป็นนักเรียนอยู่ Mathematica 1.0 พึ่งออกมา และผมก็ใช้ช่วยในการเรียนและทำความเข้าใจในเรื่องต่างๆได้เป็นอย่างดี
ในตอนด่อๆไป ผมจะเน้นรายละเอียดในเรื่องต่างๆมากขึ้น ถ้าใครมีอะไรสนใจเป็นพิเศษ ก็ช่วยบอกไว้ใน http://mpec.sc.mahidol.ac.th/ หรือเมล์ผม ที่ [email protected] นะครับ


Created by Mathematica  (October 4, 2005)