矩陣相乘最重要的方法是一般矩陣乘積。它只有在第乙個矩陣的列(column)和第二個矩陣的行數(row)相同時才有意義 。一般單指矩陣乘積時,指的便是一般矩陣乘積。乙個m×n的矩陣就是m×n個數排成m行n列的乙個數陣。由於它把許多資料緊湊的集中到了一起,所以有時候可以簡便地表示一些複雜的模型。
運算如下所示:
我們可以在2個矩陣上執行加,減,乘和除運算。從使用者輸入一行數字和列號,組成第乙個矩陣元素和第二個矩陣元素。然後,對使用者輸入的矩陣執行乘法。
1.思路
首先,由於輸入的矩陣維數是隨機的,因此,我們要設計程式,手動把行和列算出來,這樣方便後續乘法運算。並且把輸入的數字提取出來,放入乙個float型陣列中,這樣我們就完成了讀入工作,之後就是利用乘法公式進行運算,並把結果放入乙個二維陣列中,最後把結果輸出來就行了。
2.資料讀入
這裡是容易出現問題的地方,最初的想法是用cin.getline()把整個輸入都讀進乙個char型字串行中,然後再用特定位置的數做乘法。後來發現有兩個問題,第一,數字讀入乙個char字串行中就變成了ascii碼,這個還比較好解決,用每個位置的數減去『 0『就行了。第二個問題是硬傷,就是把乙個數字放到乙個char型的序列中,他會把連在一起的數字給拆開,比如說我想輸入123,他不會把123放到乙個格里,而是1放到乙個格,2放入另乙個格,3再放乙個格。所以不能放到char中。於是想到把輸入放到float陣列裡, 但是這樣就有乙個新問題,就是如何把符號摘出去。如果直接用cin,那麼碰到符號它並不會跳過,而是也會錄入,這是不行的,但是對於這個問題,我們知道輸入的格式都是類似於:123,1,2;1,2,3這樣的,規律就是乙個數字乙個符號,我們可以用賦值的方式來跳過,和;的錄入。具體來說就是先用乙個cin,把第乙個數字錄入,然後用c=getchar()的方式來跳過逗號的錄入。然後再cin,再c=getchar,最終當c=getchar()等於回車,也就是\n時停止。由於c=getchar()是判斷條件,所以我們這個迴圈要從逗號開始,也就是先錄入乙個數字,再進行迴圈。
在錄入的過程中,我們就可以直接把行數和列數讀取出來:行數就是;(分號)的個數加一,列數就是總共的數字個數除以行數。
cout << "please enter matrixa:"<> a[i];
while ((c=getchar()) != '\n')
m++;
i++;
n = i/ m;
cout << "please enter matrixb:"<> b[j];
while ((c = getchar()) != '\n')
k++;
j++;
p = j / k;
拿第一段,矩陣a的錄入來說,m是行數,由於m作為;的計數器,因此行數要在分號個數的基礎上加一,即m++,而由於a[ ]這個陣列是從a[0]開始的,因此a[i]表示有i+1個數,所以i++。這樣就實現了矩陣a,b的錄入,雖然錄進去的是乙個一維的陣列,但也不妨礙後續的矩陣乘法計算。
3.矩陣相乘
在矩陣乘法第一矩陣中,乙個行元素乘以第二矩陣所有列元素。讓我們通過下面的**理解3 * 3和3 * 3矩陣的矩陣乘法:
下面來看看看c++中的矩陣乘法程式。
#include using namespace std;
int main()
}
cout<<"enter the second matrix element=\n";
for(i=0;i>b[i][j];
}
}
cout<<"multiply of the matrix=\n";
for(i=0;i執行上面**得到以下結果
enter the number of row=3
enter the number of column=3
enter the first matrix element=
1 2 3
1 2 3
1 2 3
enter the second matrix element=
1 1 1
2 1 2
3 2 1
multiply of the matrix=
14 9 8
14 9 8
14 9 8
實現稀疏矩陣相乘C C
1 問題描述 已知稀疏矩陣a m1,n1 和b m2,n2 求乘積c m1,n2 a 3 0 0 7 b 4 1 c 12 17 0 0 0 1 0 0 0 2 0 2 0 0 1 1 0 0 0 2 a b c的三元組表示法分別為 a ijv1112 2147 324 1 4322 b i jv1...
CULA矩陣相乘和CUBLAS矩陣相乘
cula的矩陣相乘 culadevicedgemm n n n,m,k,alpha,b device,n,b k x n a device,k,a m x k beta,c device,n 上式表示 c a b的矩陣相乘方法,而且資料型別為double,也可以使用float型別資料的函式 cula...
矩陣冪(矩陣相乘)
題目描述 給定乙個n n的矩陣,求該矩陣的k次冪,即p k。第一行 兩個整數n 2 n 10 k 1 k 5 兩個數字之間用乙個空格隔開,含義如上所示。接下來有n行,每行n個正整數,其中,第i行第j個整數表示矩陣中第i行第j列的矩陣元素pij且 0 pij 10 另外,資料保證最後結果不會超過10 ...