Numerical Method with Ruby

เพจนี้ลิงค์ไปหา source code ของ numerical method ต่างๆที่เขียนโดยใช้ภาษา Ruby 2.0 โค้ดเหล่านี้อาจจะมี bug ดังนั้นผมจะไม่รับผิดชอบต่อความเสียหายอันเกิดจากการนำโค้ดเหล่านี้ไปใช้ และถ้าพบ bug ก็ช่วยเมลบอกผมด้วยครับ (uuriter@yahoo.com)

การเขียนโค้ดนี้ได้รับการช่วยเหลือจาก รศ.ดร.มนตรี มาลีวงศ์

Why Ruby?

ปรกติโค้ดทางด้าน numer นิยมเขียนด้วยภาษา Matlab แต่เนื่องจาก Matlab เป็นเครื่องมือที่ต้องเสียเงินซื้อ ดังนั้นผมจึงเลือกภาษา Ruby ซึ่งฟรี มาเป็นอีกทางเลือกหนึ่งสำหรับผู้เรียนวิชานี้ สำหรับผู้ที่ไม่รู้จักภาษา Ruby ก็ขอบอกว่าภาษานี้ได้รับความนิยมมากกว่า Matlab (อ้างอิงจากดัชนี TIOBE เดือนกันยายน ปี 2013 Matlab ได้อันดับที่ 19 ส่วน Ruby ได้ที่ 13) และภาษานี้สามารถใช้เขียนเว็บได้โดยใช้คู่กับเฟรมเวิร์คที่ชื่อว่า Rails เรียกว่า Ruby on Rails ซึ่งเว็บดังๆหลายเว็บเขียนด้วย Ruby on Rails ตามที่เขียนใน Wikipedia

Some of the largest sites running Ruby on Rails include Github, Yammer, Scribd, Groupon, Shopify, and Basecamp. As of March 2013, it is estimated that about 211,295 web sites are running Ruby on Rails

นอกจากนั้นผมยังเห็นว่าภาษา Ruby อ่านง่ายเมื่อเทียบกับหลายๆภาษา

การเขียนโค้ดนี้เน้นให้อ่านง่าย* มากกว่าประสิทธิภาพ (* อ่านง่ายสำหรับผู้ที่เคยเรียน Ruby สักเทอม หรือมากกว่า 20 นาที?)

Base-1

เนื่องจาก Matrix และ Array ใน Ruby เป็น base-0 แต่เนื่องจาก pseudo code นิยมเขียนเป็น base-1 ผมจึงสร้างคลาส Matrix1 และ Array1 เพื่อใช้กับโค้ดที่ผมเขียนขึ้น ดาวน์โหลดคลาสทั้งสองได้ที่นี่ แนะนำว่าอย่าใช้คลาส Matrix1 และ Array1 กับโค้ดอื่นๆ เพราะผมทดสอบเมธอดของคลาสเหล่านั้นเท่าที่ผมใช้ในการเขียนโค้ดในเพจนี้เท่านั้น และแนะนำว่าอย่าดูโค้ดในไฟล์ดังกล่าว ผมอายเพราะโค้ดไม่สวย

หาราก

แก้ระบบสมการ : วิธีตรง

แก้ระบบสมการ : วิธีทำซ้ำ

ประมาณค่าในช่วง

  • Newton Interpolating Polynomial
  • Lagrange Interpolating Polynomial
  • Quadratic Spline
  • Cubic Spline
Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s