برنامه ی ضرب ماتریسی (زبان C# )
ضرب ماتریسی را در پست های قبل مرور کردیم، حالا پیاده ساری این ضرب در زبان برنامه ی C# یا C++ را بررسی می کنیم. نحو و دستورات این دو زبان (در محیط دات نت) بسیار مشابه است.
ابتدا برای شروع کار نیاز به تعریف سه آرایه دو بعدی داریم، دو تا برای ماتریس های ورودی و یکی برای ماتریس خروجی یا حاصلضرب. (یک آرایه ی دو بعدی به منزله ی یک ماتریس است). سایز دو آرایه را میتوان به اندازه ی دلخواه تعیین نمود. یکی از ساده ترین روش ها این است که ابتدا ابعاد دو آرایه ورودی را از کاربر دریافت کنید و ماتریس ها را بر اساس آن تعریف کنید. برای مثال تکه کد زیر را میتوانید برای این کار به کار ببرید :
int Row1 = int.Parse (Console.ReadLine ());
int Col1 = int.Parse (Console.ReadLine ());
int[ , ] FirstMatrix = new int [Row1, Col1];
در بالا ابتدا دو متغیر به نام های Row و Col به معنای "سطر" و "ستون" تعریف کرده ایم و مقدار آنها را از ورودی دریافت کرده ایم. (بهتر است از تابع TryParse برای دریافت ورودی استفاده کنیم). پس از آن ماتریس اول را بر اساس این دو متغیر تعریف کرده ایم. حالا میتوانیم با دو حلقه ی for این ماتریس را از ورودی در یافت کنیم.
for (int i=0; i < Row1; i++)
for (int j=0; j < Col1; j++)
{
// get the matrix
{
برای ماتریس دوم نیز میتوانیم همین روش را استفاده کنیم. پس در دریافت دو ماتریس از ورودی، کاری که باید انجام دهیم بررسی امکان ضرب این دو ماتریس است. پس با استفاده از دستور if بررسی میکنیم که تعداد ستون های ماتریس اول با تعداد سطر های ماتریس دوم برابر باشد. پس از آن میتوانیم ماتریس حاصل ضرب را تعریف کنیم. مانند بالا ماتریس حاصل ضرب (برای مثال به نام Result ) را به تعداد سطر های ماتریس اول و ستون های ماتریس دوم تعریف میکنیم. حالا باید عملیات ضرب را شروع کنیم.
برای انجام این ضرب نیاز به سه حلقه (ترجیحا حلقه ی for ) داریم. پس سه حلقه ی تو در تو با شمارنده های i , j و k تعریف میکنیم.
for (int i=0; i < Row1; i++)
for (int j=0; j < Col2; j++)
for (int k=0; k < Col1; k++)
{
Result [i , j] += FirstMatrix [i , k] * SecondMatrix [k , j];
}
با اتمام این سه حلقه عملیات ضرب اتمام میابد و میتوانید ماتریس Result را در خروجی نمایش دهید. مهمترین بخش این برنامه همین عملیات ضرب است که با سه حلقه ی تو در تو انجام میابد. شمارنده ی حلقه ی اول به اندازه ی سطر های ماتریس اول و شمارنده ی حلقه دوم به اندازه ی ستون های ماتریس دوم است و حلقه ی سوم نیز درایه های متناظر این دو ماتریس را می پیماید. برنامه ساده زیر را می توانید برای انجام ضرب ماتریسی استفاده کنید.
+ نوشته شده در چهارشنبه سوم خرداد ۱۳۹۱ ساعت 21:51 توسط MEC
|
GENERAL INFORMATION