Wednesday, August 12, 2015

โปรแกรมภาษา C++ : Class CMatrix สำหรับช่วยคำนวณพิชคณิต

หลังจากที่ได้นำเสนอการเขียนโปรแกรมภาษา C++ มาระยะหนึ่ง โดยที่ผ่านมามุ่งเน้นไปที่การเขียนโปรแกรมสำหรับแก้ปัญหาพืชคณิตด้วยเมตริกซ์มาบ้างแล้ว ทั้งการ บวก ลบ คูณ เมตริกซ์ โดยได้เขียนโปรแกรมแยกเป็นโมดูลหรือฟังก์ชันไว้แล้ว แต่เพื่อจะให้ผู้ที่สนใจนำโค้ดโปรแกรมภาษา C++ ไปใช้ในการแก้ปัญหาพีชคณิตโดยใช้การดำเนินการของเมตริกซ์ เอาไปใช้ได้ด้วย จึงเกิด Class CMatrix ขึ้น Class ในภาษา C++ เป็นการเขียนโปรแกรมเชิงวัตถุ (Object -Oriented Programming) ซึ่งได้รวมรวมการดำเนินการของเมตริกซ์ไว้เกือบครบ รวมถึงระเบียบวิธีเชิงตัวเลขสำหรับแก้ระบบสมการ โดย Class CMatrix ที่ได้พัฒนาขึ้นจะมีขอบเขตถึงการแก้ระบบสมการที่เป็นเชิงเส้น(Linear Equation System) เท่านั้น ส่วนความสามารถในการแก้ระบบสมการที่ไม่เป็นเชิงเส้น (Nonlinear Equation System) ท่านอาจจะนำไปประยุกต์ต่อได้ครับ ในเบื้องต้นจะขอแนะนำ การโหลดข้อมูลของเมตริกซ์ก่อนเพื่อให้ท่านสามารถใช้งาน Class Matrix ได้ โดยสามารถทำได้ 2 วิธีคือ

1. ผ่านคอนสตรัคเตอร์ ตอนประกาศ Object มีรูปแบบดังนี้
CMatrix A(char *pFilePath)  โดย FilePath จะเป็นชื่อและที่อยู่ของ text ไฟล์ที่เป็นรูปแบบของเมตริกซ์ ดังที่เคยนำเสนอไปแล้วในตอน ฟังก์ชันสำหรับโหลดไฟล์ input เพื่อสร้างเมตริกซ์ 

2. ผ่านคอนสตรัคเตอร์แบบที่ 2 ตอนประกาศ Object มีรูปแบบดังนี้
CMatrix A(const int r , const int c , double **pD)

3. ท่านสามารถสำเนาข้อมูลจาก Object อื่นๆ ได้ ผ่าน Copy คอนสตรัคเตอร์ ดังนี้
สมมุติ มี object คลาส CMatrix ชื่อ A เราสามารถสร้าง object ฺB โดยให้ Copy ข้อมูลจาก object A ได้ ดังนี้
CMatrix B(A) ;

4. ท่านสามารถสร้าง object class CMatrix เมื่อทราบแค่ขนาดของ Matrix โดยทียังไม่มีข้อมูลก็ได้ดังนี้
CMatrix A(2,3) สร้างเมตริกส์ขนาด 2x3
CMatrix A(3) สร้างเมตริกส์ขนาด 3x3

5. ท่านสามารถสร้าง object class CMatrix แบบ Default Constructor ขึ้นมาเพื่อรองรับการดำเนินการทางเมติกซ์ของ object class CMatrix อื่นๆ ได้ เช่น การแก้ระบบสมการ สามารถประกาศได้ ดังนี้
CMatrix A ;

โดย r คือจำนวนแถวของเมตริกซ์ c คือจำนวนหลักของเมตริกซ์ และ pD คือ ไดนามิกส์อาเรย์ 2 มิติ ที่ประกอบไปด้วยสมาชิกของเมตริกซ์ row x col ตัว

มาถึงตรงนี้ท่านก็จะสามารถใช้งาน Class CMatrix ได้แล้ว หรือหากจะนำ Class นี้ไปพัฒนาต่อก็ทำได้ครับ download Class CMatrix ได้เลยครับ

ในบทความต่อๆไปผมจะนำเสนอการประยุกต์ใช้ Class CMatrix ในภาษา C++ สำหรับแก้ปัญหาพิชคณิตต่อไปนะครับ หรือจะเป็นปัญหาอื่นๆที่สามารถเขียนในรูป Matrix และมีการดำเนินการระหว่างเมตริกซ์ที่เป็นขั้นเป็นตอนก็สามารถนำ Class นี้ไปใช้งานได้ครับ