الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ضىرب المصفوفات في الNTL

بدأه justalayoubi في 6 أبريل 2013 · 0 رد · 783 مشاهدة · في قسم التقنيات الجديدة (لإفتتاح أقسام خاصة بها لاحقا)
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم ورحمه الله
بحثت كثيرا في المنتدي و لم اجد مكان مناسب لسؤالي .... و اخيرا وضعته هنا ولا ادري اذا كان هذا هو المكان الصحيح ام لا
أخوتي ...
لدي برنامج يقوم بضرب اربعة مصفوفات مع بعضها حيث ان المصفوفه الاولي هي من نوع (nxn)  و الثانيه  (nxk) و الثالثه (kxk) الرابعه (kx1)
و يكون الناتج مصفوفه من نوع (nx1) .
و قد قمت بكتابه هذا الكود ولكن لا ينفذ ... :cry: ارجوكم من كانت لديه الخبره فليكسب فيني الاجر {قال تعالي " إنا لا نضيع أجر من أحسن عملاً" }
الكود ...

 

#include <NTL/ZZ.h>
#include <NTL/matrix.h>

using namespace std;
using namespace NTL;

void mul(Mat<ZZ>& X, const Mat<ZZ>& A, const Mat<ZZ>& B)
{
   long n = A.NumRows();
   long n = A.NumCols();
   long k = B.NumCols();
   long n = C.NumRows();
   long k = C.NumCols();
   long 1 = D.NumCols();

   if (n != B.NumRows())
      Error("matrix mul: dimension mismatch");

   C.SetDims(n, k); // make C have n rows and k columns

   long i, j, d;
   ZZ acc, tmp;

   for (i = 1; i <= n; i++) {
      for (j = 1; j <= k; j++) {
         acc = 0;
         for(d = 1; d <= n; d++) {
            mul(tmp, A(i,d), B(d,j));
            add(acc, acc, tmp);
         }
         C(i,j) = acc;
      }
   }
     if (n !=D.NumRows())
        Error ("matrix mul: dimension mismatch");

     E.SetDims(n, 1); // make E have n rows and 1 columns

     long i, j, d;
     ZZ acc, tmp;

     for (i = 1; i <= n; i++) {
        for(j = 1; j <= k; j++) {
          acc = 0;
          for(d = 1; d <= k; d++) {
            mul(tmp, C(i,d), D(d,1));
            add(acc, acc, tmp);
          }
          E(i,1) = acc;
       }
    }

}

 

 

 

 

 

مواضيع مشابهة