جمعه, 14 اسفند 1394 11:25

الگوریتم ضرب داخلی یا ضرب نقطه ای (dot product) دو ماتریس

نوشته شده توسط
این مورد را ارزیابی کنید
(1 رای)

الگوریتم

در این مطلب آموزشی از سری آموزش الگوریتم بهگذر ابتدا الگوریتم ضرب داخلی یا ضرب نقطه ای (dot product) دو ماتریس را برای حل توسط کامپیوتر طراحی و سپس نمونه کد آن را برای زبان برنامه نویسی سی شارپ C# پیاده سازی می کنیم.

در الگوریتم ضرب داخلی یا ضرب نقطه ای (dot product) دو ماتریس در واقع می خواهیم دو ماتریس با عناصر عدد اعشاری را از کاربر دریافت کرده و ضرب داخلی یا ضرب نقطه ای (dot product) آنها را محاسبه کرده و به وی نمایش دهیم. توجه کنید که ضرب داخلی یا ضرب نقطه ای (dot product) دو ماتریس تنها زمانی امکان پذیر است که  تعداد ستون های ماتریس اول با سطرهای ماتریس دوم برابر باشد. حاصل‌ضرب یک ماتریس mدرn در یک ماتریس nدرp یک ماتریس mدرp است. طرح این الگوریتم برای کامپیوتر به شرح زیر است:

 

روش ضرب داخلی یا ضرب نقطه ای (dot product) دو ماتریس:

در حالت کلی درایه سطر i ام و ستون j ام ماتریس C از ضرب سطر i آم ماتریس A در ستون j ام ماتریس B به دست می آید.

 

1) شروع

2) یک ماتریس m×n بخوان و در متغیر a قرار بده.

3) یک ماتریس n×p بخوان و در متغیر b قرار بده.

4) یک ماتریس n×p ایجاد کن و در متغیر c قرار بده.

5) تعداد سطرهای ماتریس A را در متغیر m قرار بده.

6) تعداد ستون های ماتریس A را در متغیر n قرار بده.

7) تعداد ستون های ماتریس B را در متغیر p قرار بده.

8) مقدار صفر را در متغیر i قرار بده.

9) مقدار صفر را در متغیر j قرار بده.

10) مقدار صفر را در متغیر value قرار بده.

11) مقدار صفر را در متغیر k قرار بده.

12) مقدار a[i, k] × b[k, j] را به متغیر value اضافه کن.

13) یک واحد به متغیر k اضافه کن.

14) اگر k < n است به مرحله 12 برو.

 15) مقدار value را در c[i,j] قرار بده.

16) یک واحد به متغیر j اضافه کن.

17) اگر مقدار j < p است به مرحله 11 برو.

18) یک واحد به i اضافه کن.

19) اگر مقدار i < m است به مرحله 9 برو.

20) ماتریس C را بعنوان حاصل ضرب نقطه ای (dot product) دو ماتریس A و B نمایش بده.

8) پایان.

 

نکته: در نمونه کد زیر برای ذخیره عناصر یک ماتریس از یک آرایه دو بعدی استفاده است. چنانچه بخواهیم در عناصر ماتریس از اعداد اعشاری استفاده کنیم می بایست متغیر ها را از نوع double تعریف کنیم.

 

نمونه کد C# برای الگوریتم ضرب داخلی یا ضرب نقطه ای (dot product) دو ماتریس

 

double[,] a = { { 2.5, 4 }, { 3, 1.25 }, { 2.75, 3.2 } };

double[,] b = { { 3.6, 1, 2.75 }, { 5, 4.2, 3.25 } };

int m = a.GetLength(0);

int n = a.GetLength(1);

int p = b.GetLength(1);

double[,] c = new double[m,p];

for (int i = 0; i < m; i++) {

for (int j = 0; j < p; j++) {

double value = 0;

for (k = 0; k < n; k++) {

value += a[i, k] * b[k, j];

}

c[i, j] = value;

}

}

for (int i = 0; i < m; i++) {

for (int j = 0; j < p; j++)

Console.Write(c[i, j] + "\t");

Console.WriteLine();

}

 

توجه: نمونه کد های بالا در پروژه ی ConsoleApplication نوشته شده است.

 

همچنین بخوانید


الگوریتم ماگزیموم دو عدد

الگوریتم ماگزیموم سه عدد

الگوریتم چهار عدد اصلی

الگوریتم روزهای هفته

الگوریتم مساحت و محیط مستطیل

الگوریتم مساحت و محیط دایره

الگوریتم مساحت مثلث

الگوریتم مساحت و حجم کره

الگوریتم جا به جا کردن مقادیر دو متغیر

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

الگوریتم مجموع و میانگین پنج عدد

الگوریتم تبدیل سانتیگراد به فارنهایت

الگوریتم تبدیل فارنهایت به سانتیگراد

الگوریتم تعیین قائم الزاویه بودن مثلث

الگوریتم ریشه های معادله درجه دوم

الگوریتم محاسبه بیمه و مالیات حقوق یک کارمند

الگوریتم محاسبه حقوق یک کارمند بر اساس ساعت کار

الگوریتم محاسبه مالیات با درصدهای مختلف

الگوریتم تعیین هزینه تلگراف

الگوریتم مجموع 20 عدد

الگوریتم جمع دو ماتریس

الگوریتم تفریق دو ماتریس

الگوریتم ضرب داخلی یا ضرب نقطه ای (dot product) دو ماتریس

الگوریتم ضرب یک عدد حقیقی (scalar) در یک ماتریس

الگوریتم محاسبه ترانهاده (transpose) یک ماتریس

الگوریتم محاسبه دترمینان (determinant) یک ماتریس 2×2

الگوریتم محاسبه کهاد (minor) یک ماتریس

بازدید 2711 بار آخرین ویرایش در چهارشنبه, 19 اسفند 1394 15:32

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید

جدیدترین های آندروید

جدیدترین های آموزش زبان فرانسوی

جدیدترین های آموزش زبان انگلیسی

جدیدترین های صوتی

جدیدترین های ویندوزفون

جدیدترین های الگوریتم

جدیدترین های آموزش PHP

جدیدترین های پیامک

ورود

رضایت از بهگذر را به گوش گوگل برسانید
Web Analytics

بیشتر بخوانید

بیشتر بخوانید

بیشتر بخوانید

Windows 8 Ringtone

گاهی ممکن است پس از مدتی صدای زنگ (رینگتون ها) و یا صداهای هشدار تلفن شما برایتان یکنواخت و تکراری شود. این زمانی است که تصمیم میگیرید آنها را عوض کنید. به علاوه گاهی ممکن است تصمیم بگیرید اصلا صدای زنگ را قطع کنید و به اصطلاح گوشی را سایلنت کنید و یا آن را در وضعیت ویبره (لرزش) قرار دهید. دانستن نحوه ی تنظیم این تغییرات برای هر کسی که دارای یک گوشی موبایل مجهز به ویندوز فون 8 است مهم می باشد.

بیشتر بخوانید

الگوریتم مساحت و محیط مستطیل

در این مطلب آموزشی ابتدا الگوریتم مساحت و محیط دایره را برای حل توسط کامپیوتر طراحی و سپس نمونه کد آن را برای زبان های برنامه نویسی سی شارپ C# و وی بی دات نت VB.NET پیاده سازی می کنیم.

رضایت از بهگذر را به گوش گوگل برسانید