PDA

View Full Version : توضیح کد



sa1378
یک شنبه 09 شهریور 1393, 19:19 عصر
سلام
این کد برای ضرب ماتریس هست
از خط 5 به بعد نفهمیدم چی هست
122924
توضیح لطفا

مسعود اقدسی فام
یک شنبه 09 شهریور 1393, 21:00 عصر
این یه شبه کد هست که ضرب ماتریس‌ها رو به صورت بازگشتی نشون می‌ده.
روش کار به این ترتیبه که: دو تا ماتریسی که قراره ضرب بشن رو به چهار قسمت (وسط ستون و وسط سطر) تقسیم می‌کنه و اونها رو در هم ضرب می‌کنه. این عکس بهتر نشون می‌ده:


http://d2o58evtke57tz.cloudfront.net/wp-content/uploads/strassen_new.png

sa1378
یک شنبه 09 شهریور 1393, 22:20 عصر
میشه مثلا اگه زحمتی نیست برای یه ماتریس ۴x۴ مثال بزنین؟

مسعود اقدسی فام
دوشنبه 10 شهریور 1393, 00:32 صبح
میشه مثلا اگه زحمتی نیست برای یه ماتریس ۴x۴ مثال بزنین؟
همون تصویر قبلی فرض کنید a تا h همه ماتریس‌های دو در دو هستن. پس دو تا ماتریس A و B چهار در چهار (n = 4) هستن که به این ترتیب نمایش داده شدن. بعد مثلا ae+bg دو تا ضرب ماتریس‌های دو در دو (با n = 2) داره و یدونه جمع. خود این ضرب‌های دو در دو هم با استفاده از همین الگوریتم انجام می‌شه. یعنی هر ماتریس دو در دو تقسیم بر چهار قسمت می‌شه که هر کدوم فقط یه عنصر دارن و به همین روش بازگشتی با n = 1 فراخوانی می‌شه.
کل محاسبات کم تموم شد، C به صورت یه ماتریس چهار در چهار به دست می‌یاد.
خودتون دو تا ماتریس چهار در چهار بکشید و بعد به صورت دستی همین محاسبات رو انجام بدید تا خوب متوجه بشید.

خواهش نوشت: عناوین مطلبی رو که می‌سازید با معنی انتخاب کنید لطفا. عناوینی مثل "اصلاح کد" و "توضیح کد" چیزی هستن که می‌شه روی بیشتر از نصف مطالب تالار گذاشت. یه جورایی باید بتونیم بینشون تمایز قائل بشیم! مرسی.

a.r.khoshghalb
دوشنبه 10 شهریور 1393, 06:55 صبح
کد رو متوجه نمیشی بخاطر اینکه احتمالا صرب ماتریس ها رو بلد نیستی.
پیشنهاد می کنم این مقاله رو بخونی. خیلی خوب توضیح داده.
http://en.wikipedia.org/wiki/Matrix_multiplication


اگر هم حال نداشتی همش رو بخونی و یا اگر خودت یه مقدمه ای بلدی، اینش رو فقط بخون چون اینش نیاز واجبه دونستنش واسه ضرب ماتریس:


http://en.wikipedia.org/wiki/Matrix_multiplication#Illustration
(یا از منوی contents، بخش 2.2Illustraion رو انتخاب کن)