伊莉討論區

標題: 二維陣列相乘 [打印本頁]

作者: 銀幻    時間: 2010-7-27 03:17 PM     標題: 二維陣列相乘

  1. #include <iostream>

  2. using namespace std;

  3. int main(void)

  4. {
  5. int a[3][2] = {{5,4},{7,8},{7,8}},
  6. b[2][4] = {{2,3,5,1},{1,2,3,4}},
  7. c[3][4],
  8. i,j,k;

  9. for(i=0;i<3;++i){
  10. for(j=0;j<4;++j){
  11. c[i][j] = 0 ;
  12. }
  13. }


  14. for(i=0;i<3;i++){
  15. for(j=0;j<4;j++){
  16. for(k=0;k<2;k++){
  17. c[i][j] += (a[i][k]*b[k][j]);

  18. }
  19. cout << "c[" << i << "][" << j << "]=" << c[i][j] << "\t";
  20. }
  21. cout << endl;

  22. }

  23. system("PAUSE");
  24. return 0;

  25. }
複製代碼


請教各位大大
我不懂的是2個陣列相乘 為什麼需要用第三個迴圈
  1. for(k=0;k<2;k++){
  2. 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!