السلام عليكم ورحمه الله
بحثت كثيرا في المنتدي و لم اجد مكان مناسب لسؤالي .... و اخيرا وضعته هنا ولا ادري اذا كان هذا هو المكان الصحيح ام لا
أخوتي ...
لدي برنامج يقوم بضرب اربعة مصفوفات مع بعضها حيث ان المصفوفه الاولي هي من نوع (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;
}
}
}