Thursday, October 8, 2015

โปรแกรมคอมพิวเตอร์ช่วยหาคำตอบของระบบสมการเชิงเส้น ด้วย Class CMatrix

สวัสดีครับ บทความ โปรแกรมภาษา C++ บทนี้จะขอนำเสนอการประยุกต์ใช้คลาส CMatrix ช่วยในการหาคำตอบของระบบสมการเชิงเส้น เราจะประดิษฐ์โปรแกรมสำหรับช่วยหาคำตอบของระบบสมการเชิงเส้น เพื่อให้ท่านผู้อ่่านนำไปใช้งาน ทั้ง นร นศ ที่ต้องการนำไปตรวจเช็คคำตอบกับวิธีการหาคำตอบแบบแม่นตรง (Exact Solution) หรือวิศวกรที่กำลังแก้ปัญหาบางอย่างที่ประกอบไปด้วระบบสมการเชิงเส้นหลายตัวแปร สุดท้ายก็คือให้โปรแกรมเมอร์เห็นถึงวิธีการใช้งานคลาส CMatrix เพื่อนำไปประยุกต์ใช้ในการประมวลผลที่โปรแกรมประยุกต์อื่นๆ มาเริ่มกันเลยครับ

ในตัวอย่างโปรแกรมนี้จะใช้วิธีการโหลดสมาชิกของเมตริกซ์จาก Text file ที่เก็บข้อมูลไว้ ดังที่เคยนำเสนอวิธีการไว้ครับ และเป็นที่ทราบกันดีว่าระบบสมการเชิงเส้นสามารถเขียนในรูปแบบเมตริกซ์ได้ดังนี้
[A][x] = [b]
โดย A คือเมตริกซ์จัตตุรัสขนาด n x n ที่ประกอบด้วยค่าสัมประสิทธิ์คงที่ของตัวแปร x ในแต่ละสมการ
x คือ เมตริกซ์ตัวแปรที่ต้องหาคำตอบขนาด n x 1
b คือ เมตริกซ์ค่าด้านขวาของระบบสมการขนาด n x 1
ตัวอย่างเช่น พิจารณาระบบสมการเส้น 3 ตัวแปร
x + y + z = 10
x - y + z = 6
2x + y - 3z = -17.5

โดยจะบันทึกสมาชิกของเมตริก A และ b ในไฟล์ A.txt และ b.txt ไว้ที่ c:// ตามบทความที่เคยนำเสนอการเขียนโปรแกรมอ่านข้อมูลจาก text ไฟล์ 

มาดู code program ภาษา c++ กันครับ ดูแนวคิดกันก่อนนะครับ

สร้าง object A ของ class CMatrix โดยเรียก constructor สำหรับโหลดข้อมูลจากไฟล์ A.txt
สร้าง object b ของ class CMatrix โดยเรียก constructor สำหรับโหลดข้อมูลจากไฟล์ b.txt
สร้าง object x ของ class CMatrix และเรียกใช้ฟังก์ชัน SolveGuass เพื่อหาคำตอบของระบบสมการ โดยใช้ระเบียบวิธี  Gauss elimination หรือ LU decomposition

แสดงผลการหาคำตอบของระบบสมการเชิงเส้นมาดู Code กันเลยครับ


มาดูการใช้งานโปรแกรมนี้กันเลยครับตามภาพที่ 1


ท่านสามารถโหลด Program LES ไปใช้งานได้เลยนะครับ ตามวัตถุประสงค์ของบทความนี้ แต่ต้องระวังข้อผิดพลาดจากผู้ใช้ เช่น เป็นระบบสมการที่ไม่มีคำตอบ ซึ่งจะทำให้โปรแกรมทำงานผิดพลาด การไม่มีอยู่ของไฟล์เมตริกซ์ A หรือ b ตาม path ที่กำหนด ซึ่งตรงนี้ผมยังไม่ได้ทำ code ตรวจสอบไว้นะครับ ในบทต่อๆไปจะพยายามแทรก code การตรวจสอบไว้ให้เป็นตัวอย่างนะครับ นำเสนอการประยุกต์ใช้ Class CMatrix ในการสร้างโปรแกรมแก้ปัญหาอื่นๆอีกครับ



1 comment :