วิธีทำ Simpson Integration สามวิธีใน Mathematica
ขอต้อนรับ ผู้มาเยือน กรุณา ล็อกอิน หรือ สมัครสมาชิก

ล็อกอินด้วยชื่อผู้ใช้ รหัสผ่่าน และระยะเวลาใช้งาน

มีน้ำใจ ไม่อวดตัว มั่วไม่ทำ
 
Advanced search

40758 Posts in 6017 Topics- by 5900 Members - Latest Member: กนนท์ เพชรมีเเก้ว
mPEC Forumบทเรียนการใช้โปรแกรม Mathematica (Moderator: psaipetc)วิธีทำ Simpson Integration สามวิธีใน Mathematica
Pages: 1   Go Down
Print
Author Topic: วิธีทำ Simpson Integration สามวิธีใน Mathematica  (Read 2435 times)
0 Members and 1 Guest are viewing this topic.
psaipetc
Moderator
SuperHelper
*****
Offline Offline

Posts: 653


kostuff.blogspot.com


WWW
« on: February 11, 2008, 01:56:24 PM »

เขียนแบบ procedural ทั้ง หมด:

simpsonInt1[f_, a_, b_, n_] := Module[{sum, delta},
  delta = (b - a)/n;
  sum = 0;
  For[i = 1, i <= n, i += 2,
   sum += f[a + (i - 1) delta] + 4 f[a + i delta] +  f[a + (i + 1) delta]
   ];
  sum delta/3
  ]

เขียนแบบ procedural ผสม functional:
simpsonInt2[f_, a_, b_, n_] := Module[{delta, list},
  delta = (b - a)/n;
  list = Table[f[a + i delta], {i, 0, n}];
  delta/3 Apply[Plus, Partition[list, 3, 2].{1, 4, 1}]
  ]

เขียนแบบ functional หมด:
simpsonInt3[f_, a_, b_, n_] := (b - a)/(3 n) Apply[Plus, Partition[table[f[a + i (b - a)/n], {i, 0, n}], 3, 2].{1, 4, 1}]

ผลที่ได้ เหมือนกัน
Table[{2^k, simpsonInt1[Sin, 0., Pi/2, 2^k], simpsonInt2[Sin, 0., Pi/2, 2^k], simpsonInt3[Sin, 0., Pi/2, 2^k]}, {k, 1, 10}] // TableForm

2   1.00228   1.00228   1.00228
4   1.00013   1.00013   1.00013
8   1.00001   1.00001   1.00001
16   1.   1.   1.
32   1.   1.   1.
64   1.   1.   1.
128   1.   1.   1.
256   1.   1.   1.
512   1.   1.   1.
1024   1.   1.   1.

« Last Edit: June 25, 2008, 10:39:20 PM by psaipetc » Logged

Life Lessons (related to science anyway):
http://www.guardian.co.uk/print/0,3858,5164417-111414,00.html
Pages: 1   Go Up
Print
Jump to:  

คุณสมบัติของเด็กดี

ไม่ฟังเวลามีการนินทากัน ไม่มองหาข้อด้อยของผู้อื่น ไม่พูดนินทาเหยีบบย่ำผู้อื่น