تمرین برنامه نویسی پایتون برای ضرب دو ماتریس

3 سال پیش

تمرین برنامه نویسی پایتون برای ضرب دو ماتریس

در این مثال از مجموعه آموزش برنامه نویسی سایت سورس باران، شما تمرین برنامه نویسی پایتون برای ضرب دو ماتریس را یاد خواهید گرفت.

 

برای درک این مثال ، باید از مباحث برنامه نویسی پایتون زیر آگاهی داشته باشید:

در پایتون، ما می توانیم یک ماتریس را به عنوان لیست تو در تو (لیست داخل لیست) پیاده سازی کنیم.

ما می توانیم با هر عنصر به عنوان یک ردیف از ماتریس رفتار کنیم.

پیشنهاد ویژه : پکیج آموزش پایتون مختص بازار کار

به عنوان مثال [X = [[1 ، ۲] ، [۴ ، ۵] ، [۳ ، ۶]  ماتریس ۳×۲ را نشان می دهد. ردیف اول می تواند به عنوان [X [0 و عنصر در ردیف اول، ستون اول به عنوان [X [0] [0 انتخاب شود.

ضرب دو ماتریس X و Y فقط در صورتی تعریف می شود که تعداد ستون های X برابر تعداد ردیف های Y باشد.

اگر X ماتریس n x m و Y ماتریس m x l باشد، XY تعریف شده و دارای بعد n x l است (اما YX تعریف نشده است). در اینجا چند روش برای پیاده سازی ضرب ماتریس در پایتون آورده شده است.

 

سورس کد: ضرب ماتریس با استفاده از حلقه تو در تو

# Program to multiply two matrices using nested loops

# ۳x3 matrix
X = [[12,7,3],
    [۴ ,۵,۶],
    [۷ ,۸,۹]]
# ۳x4 matrix
Y = [[5,8,1,2],
    [۶,۷,۳,۰],
    [۴,۵,۹,۱]]
# result is 3x4
result = [[0,0,0,0],
         [۰,۰,۰,۰],
         [۰,۰,۰,۰]]

# iterate through rows of X
for i in range(len(X)):
   # iterate through columns of Y
   for j in range(len(Y[0])):
       # iterate through rows of Y
       for k in range(len(Y)):
           result[i][j] += X[i][k] * Y[k][j]

for r in result:
   print(r)

خروجی

[۱۱۴, ۱۶۰, ۶۰, ۲۷]
[۷۴, ۹۷, ۷۳, ۱۴]
[۱۱۹, ۱۵۷, ۱۱۲, ۲۳]

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

این روش ساده است اما از نظر محاسباتی سخت است زیرا ترتیب ماتریس را افزایش می دهیم.

برای کارهای ماتریس بزرگتر، بسته های نرم افزاری بهینه شده ای مانند NumPy را توصیه می کنیم که چندین برابر (به ترتیب ۱۰۰۰) برابر سریعتر از کد فوق است.

 

سورس کد: ضرب ماتریس با استفاده از list comprehension تو در تو

# Program to multiply two matrices using list comprehension

# ۳x3 matrix
X = [[12,7,3],
    [۴ ,۵,۶],
    [۷ ,۸,۹]]

# ۳x4 matrix
Y = [[5,8,1,2],
    [۶,۷,۳,۰],
    [۴,۵,۹,۱]]

# result is 3x4
result = [[sum(a*b for a,b in zip(X_row,Y_col)) for Y_col in zip(*Y)] for X_row in X]

for r in result:
   print(r)

خروجی این برنامه همانند بالا است. برای درک کد فوق ابتدا باید در مورد تابع توکار ()zip  و جدا کردن لیست آرگومان با استفاده از عملگر * بدانیم.

ما برای تکرار از طریق هر عنصر در ماتریس از list comprehension تو در تو استفاده کرده ایم.

منبع.

لیست جلسات قبل آموزش برنامه نویسی پایتون

  1. آموزش نصب و اجرای برنامه نویسی پایتون
  2. کلیدواژه ها و شناسه های برنامه نویسی پایتون
  3. دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
  4. متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون 
  5. انواع داده ها در برنامه نویسی پایتون
  6. تبدیل نوع در برنامه نویسی پایتون
  7. ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
  8. عملگرها در برنامه نویسی پایتون
  9. نام و دامنه در برنامه نویسی پایتون
  10. دستور شرطی if…else در برنامه نویسی پایتون
  11. حلقه for در برنامه نویسی پایتون
  12. حلقه while در برنامه نویسی پایتون
  13. دستورات break و continue در برنامه نویسی پایتون
  14. دستور pass در برنامه نویسی پایتون
  15. توابع در برنامه نویسی پایتون
  16. آرگومان تابع در برنامه نویسی پایتون
  17. تابع بازگشتی در برنامه نویسی پایتون
  18. تابع بی نام/ تابع لامبدا در برنامه نویسی پایتون
  19. متغیرهای سراسری، محلی و غیر محلی در برنامه نویسی پایتون
  20. کلیدواژه global در برنامه نویسی پایتون
  21. ماژول های برنامه نویسی پایتون
  22. پکیج ها در برنامه نویسی پایتون
  23. اعداد و تبدیل نوع داده در برنامه نویسی پایتون 
  24. لیست در برنامه نویسی پایتون
  25. تاپل در برنامه نویسی پایتون 
  26. رشته ها در برنامه نویسی پایتون
  27. مجموعه ها در برنامه نویسی پایتون
  28. دیکشنری در برنامه نویسی پایتون
  29. عملیات ورودی/خروجی در برنامه نویسی پایتون 
  30. دایرکتوری و مدیریت فایل ها در برنامه نویسی پایتون
  31. خطاها و استثناهای توکار در برنامه نویسی پایتون
  32. مدیریت استثناها در برنامه نویسی پایتون
  33. استثناهای تعریف شده توسط کاربر در برنامه نویسی پایتون
  34. برنامه ‌نویسی شی گرا در پایتون
  35. اشیا و کلاس ها در برنامه نویسی پایتون
  36. وراثت در برنامه نویسی پایتون
  37. وراثت چندگانه در برنامه نویسی پایتون
  38. سربارگذاری عملگرها در برنامه نویسی پایتون
  39. تکرار کننده ها در برنامه نویسی پایتون
  40. Generator در برنامه نویسی پایتون
  41. بستار در برنامه نویسی پایتون
  42. دکوراتور در برنامه نویسی پایتون
  43. دکوراتور property در برنامه نویسی پایتون
  44. عبارات با قاعده در برنامه نویسی پایتون (RegEx)
  45. تمرین برنامه نویسی پایتون برای پرینت !Hello world
  46. تمرین برنامه نویسی پایتون برای جمع کردن دو عدد
  47. تمرین برنامه نویسی پایتون برای یافتن ریشه مربع
  48. تمرین برنامه نویسی پایتون برای محاسبه مساحت یک مثلث
  49. تمرین برنامه نویسی پایتون برای حل معادله درجه دوم
  50. تمرین برنامه نویسی پایتون برای مبادله دو متغیر
  51. تمرین برنامه نویسی پایتون برای تولید عدد تصادفی
  52. تمرین برنامه نویسی پایتون برای تبدیل کیلومتر به مایل
  53. تمرین برنامه نویسی پایتون برای تبدیل سانتیگراد به فارنهایت
  54. تمرین برنامه نویسی پایتون برای بررسی مثبت یا منفی بودن یک عدد
  55. تمرین برنامه پایتون برای بررسی زوج یا فرد بودن یک عدد
  56. تمرین برنامه نویسی پایتون برای بررسی سال کبیسه
  57. تمرین برنامه نویسی پایتون برای یافتن بزرگترین عدد در بین سه عدد
  58. تمرین برنامه نویسی پایتون برای بررسی عدد اول
  59. تمرین برنامه نویسی پایتون برای چاپ تمام اعداد اول در یک بازه زمانی
  60. تمرین برنامه نویسی پایتون برای یافتن فاکتورهای یک عدد
  61. تمرین برنامه نویسی پایتون برای نمایش جدول ضرب
  62. تمرین برنامه نویسی پایتون برای چاپ توالی فیبوناچی
  63. تمرین برنامه نویسی پایتون برای بررسی عدد آرمسترانگ
  64. تمرین برنامه نویسی پایتون برای یافتن عدد آرمسترانگ بین دو عدد صحیح
  65. تمرین برنامه نویسی پایتون برای یافتن مجموع اعداد طبیعی
  66. تمرین برنامه نویسی پایتون برای نمایش توان ۲ با استفاده از تابع بی نام
  67. تمرین برنامه نویسی پایتون برای یافتن اعداد قابل تقسیم بر عدد دیگری
  68. تمرین برنامه نویسی پایتون برای تبدیل دهدهی به باینری، اکتال و هگزادسیمال
  69. تمرین برنامه نویسی پایتون برای یافتن مقدار کاراکتر ASCII
  70. تمرین برنامه نویسی پایتون برای یافتن HCF یا GCD
  71. تمرین برنامه نویسی پایتون برای یافتن LCM
  72. تمرین برنامه نویسی پایتون برای یافتن فاکتورهای یک عدد
  73. تمرین برنامه نویسی پایتون برای ساخت یک ماشین حساب ساده
  74. تمرین برنامه نویسی پایتون برای جابجایی کارت های Deck
  75. تمرین برنامه نویسی پایتون برای نمایش تقویم
  76. تمرین برنامه نویسی پایتون برای نمایش توالی فیبوناچی با استفاده از بازگشت
  77. تمرین برنامه نویسی پایتون برای یافتن مجموع اعداد طبیعی با استفاده از بازگشت
  78. تمرین برنامه نویسی پایتون برای یافتن فاکتورهای عدد با استفاده از بازگشت
  79. تمرین برنامه نویسی پایتون برای تبدیل دهدهی به باینری با استفاده از بازگشت
  80. تمرین برنامه نویسی پایتون برای جمع دو ماتریس
  81. تمرین برنامه نویسی پایتون برای انتقال یک ماتریس
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه