Saturday, October 17, 2015

ตัวอย่างการโหลดสมาชิกเมตริกซ์จากอาเรย์ 2D มาใช้ใน Class CMatrix ในโปรแกรมภาษา C++

สวัสดีครับ บทความนี้ผมจะขอนำเสนอการโหลดสมาชิกของเมตริกซ์จากอาเรย์ 2D มาใช้ในคลาส CMatrix กันครับ เริ่มจาก จากบทความแนะนำ คลาส CMatrix  ได้อธิบาย คอนสตรัคเตอร์ตัวหนึ่งที่ใช้ในการโหลดสมาชิกของเมตริกซ์จากอาเรย์ 2D ซึ่งมีรูปแบบการประกาศ Object ดังนี้ครับ

CMatrix A(const int r , const int c , double **pD)
มาพิจารณาพารามิเตอร์ที่ต้องส่งผ่านคอนสตรัคเตอร์ตัวนี้ ซึ่งจะประกอบไปด้วย
1. จำนวนแถวของเมตริซ์ r
2. จำนวนหลักของเมตริกซ์ c
3. อาเรย์ 2D ซึ่งต้องเป็นแบบ pointer 

สมมุติตัวอย่าง ต้องการโหลดสมาชิกเมตริกซ์ขนาด 3x3 จากตัวแปรอาเรย์ชื่อ A เราจะเขียน code โปรแกรมภาษา C++ ในส่วนนี้ได้ดังนี้
        int row , col ;
double** data ;
row = 3 ;
col = 3 ;
data = new double*[row];
for (int i = 0 ; i < row ; i++)
{
data[i] = new double[col] ;
}

for (int j = 0 ; j < row ; j++)
{
for(int k = 0 ; k < col ; k++)
data[j][k] = j+k ;
}
cout<<"Matrix A"<<endl;
CMatrix A(row,col,data);
A.Show();
cout<<endl ;
cout<<"Matrix B"<<endl;
CMatrix B(3,3,data) ;
B.Show();

ผลลัพธ์การทำงานใน code ส่วนนี้จะแสดงได้ดังนี้


ผลการทำงานของโค้ดโปรแกรม

จากตัวอย่างโค้ดโปรแกรมภาษา C++ ที่ประมวลผลเมตริกซ์นี้ ผมได้นำเสนอ 2 รูปแบบ คือ ท่านสามารถผ่านขนาดของเมตริกซ์ด้วยตัวแปรก็ได้ หรือจะผ่านด้วยค่าก็ได้ เนื่องจาก คอนสตรัคเตอร์นี้ กำหนดชนิดของตัวแปรขนาดเป็นแบบ คงที่ (const int r , const int c , double **pD) เอาหล่ะครับ จบตรงนี้เราก็ได้ object ของคลาส CMatrix ที่พร้อมจะนำไปใช้ประมวลผลหรือดำเนินการทางเมตริกซ์ต่อ ไม่ว่าจะนำไป บวก ลบ หรือคูณเมตริกซ์ หรือแม้แต่จะนำไปหาคำตอบของระบบสมการดังที่เคยนำเสนอไปแล้ว ในบทความต่อไปจะนำ ตัวอย่างการใช้คอนสตรัคเตอร์ดังกล่าวในการแก้ปัญหาระบบสมการไม่เชิงเส้น โดยใช้ระเบียบวิธี Newton-Raphson 




No comments :

Post a Comment