PInv
Tính ma trận giả nghịch đảo của một ma trận bằng phương pháp Moore-Penrose.
cpp
matrix matrix::PInv()
1
Giá trị trả về
Ma trận giả nghịch đảo của ma trận.
Ví dụ
cpp
int TestPseudoInverse(const int size_m, const int size_k)
{
matrix matrix_a(size_m,size_k);
matrix matrix_inverted(size_k,size_m);
matrix matrix_temp;
matrix matrix_a2;
//--- điền vào ma trận
MatrixTestFirst(matrix_a);
//--- nghịch đảo
matrix_inverted=matrix_a.PInv();
//--- kiểm tra tính đúng đắn
int errors=0;
//--- A * A+ * A = A (A+ là giả nghịch đảo của A)
matrix_temp=matrix_a.MatMul(matrix_inverted);
matrix_a2=matrix_temp.MatMul(matrix_a);
errors=(int)matrix_a.CompareByDigits(matrix_a2,10);
printf("PseudoInversion %s matrix_size %d x %d errors=%d",errors==0?"passed":"failed",size_m,size_k,errors);
//---
return(errors);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21