آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

مربع های (ماتریس های) جادویی (magic squares) در متلب

نگاهی به ماتریس زیر بیندازید :


16   3     2     13
5    10    11    8
9    6     7     12
4    15    14    1

به این ماتریس، مربع جادویی (ماتریس جادویی) (magic square) می گویند و در گذشته، مردم اعتقاد داشتند که این ماتریس، خواص جادویی دارد. در ادامه شرح خواهیم داد که چرا مردم، در گذشته چنین باوری داشته اند.

با کدهای زیر، ماتریس فوق را با نام A ، در متلب تعریف می کنیم و همچنین خواص ویژه این ماتریس را به شما نشان خواهیم داد :


A=[16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]
B=sum(A)

نتیجه :


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=[16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]
A'
B=sum(A')'

نتیجه :


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 ، کدهای زیر را اجرا می کنیم :


A=[16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]
B=diag(A)

نتیجه :


A =
 
    16     3     2    13
     5    10    11     8
     9     6     7    12
     4    15    14     1
 
 
B =
 
    16
    10
     7
     1

بنابراین با دستورات زیر، می توانیم مجموع عناصر قطر اصلی ماتریس A را محاسبه کنیم :


A=[16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]
B=sum(diag(A))

نتیجه :


A =
 
    16     3     2    13
     5    10    11     8
     9     6     7    12
     4    15    14     1
 
 
B =
 
    34

مشاهده می کنید که مجموع عناصر قطر اصلی ماتریس A ، برابر همان عدد 34 می باشد.

حال با دستور زیر، مجموع عناصر روی قطر غیراصلی ماتریس A را محاسبه می کنیم :


A=[16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]
B=sum(diag(fliplr(A)))

نتیجه :


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 ستون می سازیم :


A=magic(5)
B=sum(A)
C=sum(A')'
D=sum(diag(A))
E=sum(diag(fliplr(A)))

نتیجه :


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) می باشد.

نویسنده علیرضا گلمکانی
شماره کلید 55
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 5 5 0
آزاده
۱۳۹۸/۰۴/۱۶
۲۰:۰۰

خیلی ممنون از مطلب مفید شما
خدا قوت

ممد
۱۳۹۹/۱۱/۱۹
۲۲:۰۸

حالا چطور این ماتریس رو میسازه یعنی با چه الگوریتمی به این اعداد میرسه

محمد رضا
۱۳۹۹/۱۲/۰۳
۱۷:۰۲

سلام خسته نباشید  توضیحات کاملا عالی اگه میشه برای ماتریس ۶ در ۶ هم بگین چه چطور میشه ساخت  استاد تمرین گذاشته تا امشب باید بفرستم اگه لطف کنید بگین خیلی ممنون میشم از تون

admin
۱۳۹۹/۱۲/۰۴
۰۴:۰۷

سلام.
کد متلب (MATLAB) زیر را می نویسیم :


نتیجه اجرای کد متلب (MATLAB) بالا :



پرهام
۱۴۰۲/۱۱/۲۶
۱۹:۰۹

مسخره بود.

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)