PDA

View Full Version : سوال: توضیح در مورد ماتریس اسپارس



soheilajoon
دوشنبه 22 مهر 1387, 10:27 صبح
سلام دوستان.
توی سایت کلی گشتم ولی چیزی رو که می خواستم پیدا نکردم.
کسی می تونه در مورد روش جمع و ضرب دو تا ماتریس اسپارس توضیح بده.
من فقط توضیحش رو می خوام تا بتونم برنامهشو بنویسم. :متفکر:
اگه کمکم کنید ممنون میشم.

BraveMind
دوشنبه 22 مهر 1387, 15:53 عصر
داخل کتاب ساختمان داده علیخانزاده توضیح داده

soheilajoon
دوشنبه 22 مهر 1387, 16:18 عصر
میشه بگید کجای کتاب نوشته؟
من هر چی گشتم نبود!

soheilajoon
شنبه 04 آبان 1387, 12:56 عصر
اين مدت کسی به سوالم جواب نداد ولی از اونجايی که هيچ سوالی نبايد بی جواب بمونه! کلی گشتم و بلاخره تونستم بفهمم چی به چيه! :چشمک:
حالا هم می خوام اينجا بنويسم تا ديگران هم استفاده کنند.
جمع ماتریس اسپارس:
برای جمع دو تا ماتريس اسپارس اول باید تعداد سطرهای ماتریس سومتون رو پیدا کنید , و در ستون سوم سطر اول [arrsp3[0,2 ماتریس سوم قرار بدید. کدی که خودم نوشتم اینه :



for (i = 1; i <= arrspa[0, 2]; i++)
{
for (int x = 1; x <= arrspb[0, 2]; x++)
{
if ((arrspa[i, 0] == arrspb[x, 0]) && (arrspa[i, 1] == arrspb[x, 1]))
{
counter += 1;
}
}
}



بعد باید سطر به سطر دو تا ماتریس , ستون 0 ماترس اول رو با ستون 0 ماتریس دوم و ستون 1 ماتریس اول رو با ستون 1 ماتریس دوم باهم مقایسه کنیم , اگه برابر بودند ستون 2 هرکدوم رو باهم جمع میکنیم و جوابشو توی ستون 2 ماتریس سوم قرار میدیم.
البته باید حواستون باشه توی سطر اول ماتریس سوم باید تعداد سطر و ستون و تعداد عناصر غیر صفر ماتریس رو قرار بدیم. برای چک کردن باید از سطر دوم شروع کنیم.
ضربش رو هم بعداً میزارم.
این هم عکس خروجیی که من گرفتم , شاید به دردتون بخوره.