伊莉討論區
標題:
二維陣列相乘
[打印本頁]
作者:
銀幻
時間:
2010-7-27 03:17 PM
標題:
二維陣列相乘
#include <iostream>
using namespace std;
int main(void)
{
int a[3][2] = {{5,4},{7,8},{7,8}},
b[2][4] = {{2,3,5,1},{1,2,3,4}},
c[3][4],
i,j,k;
for(i=0;i<3;++i){
for(j=0;j<4;++j){
c[i][j] = 0 ;
}
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
for(k=0;k<2;k++){
c[i][j] += (a[i][k]*b[k][j]);
}
cout << "c[" << i << "][" << j << "]=" << c[i][j] << "\t";
}
cout << endl;
}
system("PAUSE");
return 0;
}
複製代碼
請教各位大大
我不懂的是2個陣列相乘 為什麼需要用第三個迴圈
for(k=0;k<2;k++){
c[i][j] += (a[i][k]*b[k][j]);
複製代碼
看不太懂
作者:
trtc008056
時間:
2010-7-27 04:39 PM
本帖最後由 trtc008056 於 2010-7-27 04:46 PM 編輯
看起來像是矩陣乘法
但是
[3x2]應該不能和[2x4]作矩陣相乘吧?
雖然說編譯沒問題但是答案算出來應該有錯到
它的算法我不清楚,只是他c的陣列也太奇怪了吧?
作者:
hst326
時間:
2010-7-27 10:19 PM
提示:
作者被禁止或刪除 內容自動屏蔽
作者:
hst326
時間:
2010-7-27 10:20 PM
提示:
作者被禁止或刪除 內容自動屏蔽
作者:
銀幻
時間:
2010-7-27 11:42 PM
那如果是[3x1]和[2x5] 是多少啊
作者:
include
時間:
2010-7-28 08:24 AM
[3*1]跟[2*5]
是不能相乘的
[a*b] [c*d]
兩個陣列
只有當b==c時兩陣列可以相乘
且[a*b]*[c*d]=[a*d]
作者:
trtc008056
時間:
2010-7-28 09:12 AM
回復
4#
hst326
了解,我好像搞錯了矩陣乘法^^
作者:
kaworucloud
時間:
2010-7-28 09:43 AM
[a*b] [c*d]
兩個陣列
只有當b==c時兩陣列可以相乘
include 發表於 2010-7-28 08:24 AM
陣列(array)與矩陣(matrix)是不同的東西,別搞混了
作者:
trtc008056
時間:
2010-7-28 10:16 AM
回復
1#
銀幻
這次用途行表示給你看好了不知道你會不會了解
[attach]42300439[/attach]
相同的變數我用相同的顏色標示
c[
0
][
0
]=a[
0
][
0
]*b[
0
][
0
]+a[
0
][
1
]*b[
1
][
0
]
c[
0
][
1
]=a[
0
][
0
]*b[
0
][
1
]+a[
0
][
1
]*b[
1
][
1
]
.
.
.
.
依此類推
我個人的建議
拿一張紙出來
自己用學校教的方法算算看
然後再用電腦的方法算算看
不是教電腦跑,而是自己看著程式碼,一行行的把c陣列寫下來,這樣保證會了解為甚麼要用到三個迴圈....
作者:
trtc008056
時間:
2010-7-28 10:18 AM
回復
8#
kaworucloud
是不同沒錯
可是一樓程式裡面的算法似乎是矩陣相乘的運算?
畢業太久了,有一點忘記
作者:
kaworucloud
時間:
2010-7-28 11:02 AM
回復
10#
trtc008056
這是矩陣乘法沒錯
歡迎光臨 伊莉討論區 (http://a401.file-static.com/)
Powered by Discuz!