關於矩陣之基本運算,我使用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