精華區beta NTU-GIIB2004 關於我們 聯絡資訊
關於矩陣之基本運算,我使用Java跟VB做說明,用C/C++的同學可以參照Java 語法很像;矩陣的運算其實不難,多加練習之後就會習慣了... (1).矩陣設定: 設有三個3x3的方陣A,B,C 其中 A=| 1 2 3 | B=| 9 8 7 | | 4 5 6 | | 6 5 4 | | 7 8 9 | | 3 2 1 | Java: int num=3; double A[][]= new double[num][num]; double B[][]= new double[num][num]; double C[][]= new double[num][num]; // Java 陣列註標由0開始 A[0][0] = 1; A[0][1] = 2; A[0][2] = 3; A[1][0] = 4; A[1][1] = 5; A[1][2] = 6; A[2][0] = 7; A[2][1] = 8; A[2][2] = 9; B[0][0] = 9; B[0][1] = 8; B[0][2] = 7; B[1][0] = 6; B[1][1] = 5; B[1][2] = 4; B[2][0] = 3; B[2][1] = 2; B[2][2] = 1; VB: Dim n As Integer; n = 3 ReDim A(n,n) As Double ReDim B(n,n) As Double ReDim C(n,n) As Double A(1,1) = 1 A(1,2) = 2 A(1,3) = 3 A(2,1) = 4 A(2,2) = 5 A(2,3) = 6 A(3,1) = 7 A(3,2) = 8 A(3,3) = 9 (2).矩陣加法 C = A + B // 減法類似 C = B - A Java: for(int i=0;i<num;i++) { for(int j=0; j<num;j++) { C[i][j] = A[i][j] + B[i][j]; out.write("<br>"+C[i][j]); // 輸出C[i][j] } } VB: For i = 1 To n For j = 1 To n C(i, j) = A(i, j) + B(i, j) Print C(i, j) // 輸出C(i,j) Next Next Result: C=| 10 10 10 | | 10 10 10 | | 10 10 10 | (3).矩陣乘法 Java: for(int i=0;i<num;i++) { for(int j=0;j<num;j++) { m = 0; for(int k=0;k<num;k++) { m = m + A[i][k] * B[k][j]; } C[i][j] = m; out.write("<br>"+C[i][j]); } } VB: For i = 1 To n For j = 1 To n m = 0 For k = 1 To n m = m + A(i, k) * B(k, j) Next C(i, j) = m Print C(i, j) Next Next Result: C= | 30 24 18 | | 84 69 54 | | 138 114 90 | 有空在Post Cholesky跟反矩陣算法... 希望對大家有所幫助... -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.195.40