مربع های (ماتریس های) جادویی (magic squares) در متلب
نگاهی به ماتریس زیر بیندازید :
5 10 11 8
9 6 7 12
4 15 14 1
به این ماتریس، مربع جادویی (ماتریس جادویی) (magic square) می گویند و در گذشته، مردم اعتقاد داشتند که این ماتریس، خواص جادویی دارد. در ادامه شرح خواهیم داد که چرا مردم، در گذشته چنین باوری داشته اند.
با کدهای زیر، ماتریس فوق را با نام A ، در متلب تعریف می کنیم و همچنین خواص ویژه این ماتریس را به شما نشان خواهیم داد :
B=sum(A)
نتیجه :
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
B =
34 34 34 34
دستور sum ، برای محاسبه مجموع عناصر هر ستون یک ماتریس به کار می رود. بنابراین مثلا عنصر دوم از بردار B ، برابر مجموع تمامی عناصر ستون دوم ماتریس A می باشد. مشاهده می کنید که مجموع عناصر هر ستون ماتریس A برابر عدد 34 می باشد.
اما این بار، مجموع عناصر هر ردیف ماتریس A را محاسبه می کنیم :
A'
B=sum(A')'
نتیجه :
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
B =
34
34
34
34
مشاهده می کنید که مجموع عناصر هر ردیف ماتریس A نیز برابر همان عدد 34 می باشد. دقت کنید که علامت ' چنانچه پس از نام یک ماتریس بیاید، نتیجه همان ماتریس است که جای ستون ها و ردیف های آن عوض شده باشد و به این دلیل، از این علامت استفاده کرده ایم که دستور sum برای محاسبه جمع عناصر ستون ها می باشد، نه ردیف ها.
حال می خواهیم مجموع عناصر روی قطر اصلی ماتریس A را محاسبه کنیم. برای این منظور، ابتدا باید دستور diag را معرفی کنیم. دستور diag ، برداری را برمی گرداند که عناصر آن همان عناصر ماتریس اصلی می باشد. بنابراین برای مشخص کردن عناصر روی قطر اصلی ماتریس A ، کدهای زیر را اجرا می کنیم :
B=diag(A)
نتیجه :
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
B =
16
10
7
1
بنابراین با دستورات زیر، می توانیم مجموع عناصر قطر اصلی ماتریس A را محاسبه کنیم :
B=sum(diag(A))
نتیجه :
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
B =
34
مشاهده می کنید که مجموع عناصر قطر اصلی ماتریس A ، برابر همان عدد 34 می باشد.
حال با دستور زیر، مجموع عناصر روی قطر غیراصلی ماتریس A را محاسبه می کنیم :
B=sum(diag(fliplr(A)))
نتیجه :
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
B =
34
باز هم نتیجه برابر عدد 34 شد.
بنابراین توانستیم خواص ویزه ماتریس A را با استفاده از نرم افزار متلب ، مشاهده کنیم .
ساخت مربع های جادویی (ماتریس های جادویی) (magic squares) در متلب :
دستور magic در متلب، برای ساخت مربع های جادویی (magic squares)، با هر اندازه دلخواه، به کار می رود. به مثال زیر توجه کنید :
یک مربع جادویی (magic square) با 5 ردیف و 5 ستون می سازیم :
B=sum(A)
C=sum(A')'
D=sum(diag(A))
E=sum(diag(fliplr(A)))
نتیجه :
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
B =
65 65 65 65 65
C =
65
65
65
65
65
D =
65
E =
65
با نتایج بالا، ثابت کردیم که ماتریس A ، یک مربع جادویی (magic square) می باشد.
خیلی ممنون از مطلب مفید شما
خدا قوت
حالا چطور این ماتریس رو میسازه یعنی با چه الگوریتمی به این اعداد میرسه
سلام خسته نباشید توضیحات کاملا عالی اگه میشه برای ماتریس ۶ در ۶ هم بگین چه چطور میشه ساخت استاد تمرین گذاشته تا امشب باید بفرستم اگه لطف کنید بگین خیلی ممنون میشم از تون
سلام.
کد متلب (MATLAB) زیر را می نویسیم :
نتیجه اجرای کد متلب (MATLAB) بالا :
مسخره بود.