Twee matrices zijn gelijkvormig dan en slechts dan als ze dezelfde gereduceerde trapvorm hebben

Dit betekent dat je in R gelijkvormigheid van matrices kan verifiëren door na te gaan met de functie rref uit het pracma pakket dat ze dezelfde rijgereduceerde trapvorm hebben

> library(pracma)
> A <- matrix(c(4, 2, -2, 1), nrow=2); A
     [,1] [,2]
[1,]    4   -2
[2,]    2    1
> B <- matrix(c(3, 1, -2, 2), nrow=2); B
     [,1] [,2]
[1,]    3   -2
[2,]    1    2
> rref(A) == rref(B)
     [,1] [,2]
[1,] TRUE TRUE
[2,] TRUE TRUE
> all.equal(rref(A), rref(B))
[1] TRUE
> T <- matrix(c(1, 1, -1, 0), nrow=2); T  # geschikte transformatiematrix
     [,1] [,2]
[1,]    1   -1
[2,]    1    0
> inv(T) %*% A %*% T   # T^(-1)*A*T is gelijk aan matrix B
     [,1] [,2]
[1,]    3   -2
[2,]    1    2
> S <- matrix(c(1, 0, 1, 2), nrow=2); S  # transformatiematrices zijn niet uniek
     [,1] [,2]
[1,]    1    1
[2,]    0    2
> B - inv(S) %*% A %*% S
     [,1] [,2]
[1,]    0    0
[2,]    0    0
> P <- S %*% inv(T);  P  # niet-triviale transformatiematrix die A intact laat
     [,1] [,2]
[1,]   -1    2
[2,]   -2    2
> A - inv(P) %*% A %*% P
     [,1] [,2]
[1,]    0    0
[2,]    0    0>> A = [4 -2; 2 1]
A =
     4    -2
     2     1
>> B = [3 -2; 1 2]
B =
     3    -2
     1     2
>> rref(A) == rref(B)
ans =
  2×2 logical array
   1   1
   1   1
>> isequal(rref(A), rref(B))
ans =
  logical
   1
>> T = [1 -1; 1 0]   % geschikte transformatiematrix
T =
     1    -1
     1     0
>> T^(-1) * A * T    $ gelijk aan matrix B
ans =
     3    -2
     1     2
>> B  -  T^(-1) * A * T
ans =
     0     0
     0     0
>> S = [1 1; 0 2]   % transformatiematrices zijn niet uniek
S =
     1     1
     0     2
>> B - S^(-1) * A * S
ans =
     0     0
     0     0
>> P = S * T^(-1)   % niet-triviale transformatiematrix die A intact laat
P =
    -1     2
    -2     2
>> A - P^(-1) * A * P  
ans =
     0     0
     0     0
Ontgrendel volledige toegang  unlock