@@ -105,17 +105,83 @@ subtest 'Use isSquare, isOne, and isRow methods' => sub {
105
105
};
106
106
107
107
subtest ' Use tests for triangular matrices' => sub {
108
- my $A1 = Matrix([ [ 1, 2, 3, 4 ], [ 0, 6, 7, 8 ], [ 0, 0, 11, 12 ], [ 0, 0, 0, 16 ] ]);
108
+ my $A1 = Matrix([ [ 1, 2, 3, 4 ], [ 0, 6, 7, 8 ], [ 0, 0, 11, 12 ], [ 0, 0, 0, 16 ] ]);
109
109
my $A2 = Matrix([ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ], [ 13, 14, 15, 16 ] ]);
110
+ my $A3 = Matrix($A1 , $A1 );
111
+ my $A4 = Matrix($A2 , $A1 );
110
112
ok $A1 -> isUpperTriangular, ' test for upper triangular matrix' ;
111
113
ok !$A2 -> isUpperTriangular, ' not an upper triangular matrix' ;
114
+ ok $A3 -> isUpperTriangular, ' test for upper triangular degree 3 matrix' ;
115
+ ok !$A4 -> isUpperTriangular, ' not an upper triangular degree 3 matrix' ;
112
116
my $B1 = Matrix([ [ 1, 0, 0, 0 ], [ 5, 6, 0, 0 ], [ 9, 10, 11, 0 ], [ 13, 14, 15, 16 ] ]);
113
- ok $B1 -> isLowerTriangular, ' test for lower triangular matrix' ;
114
117
my $B2 = Matrix([ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ] ]);
118
+ my $B3 = Matrix($B1 , $B1 );
119
+ my $B4 = Matrix($B2 , $B1 );
120
+ ok $B1 -> isLowerTriangular, ' test for lower triangular matrix' ;
115
121
ok !$B2 -> isLowerTriangular, ' not a lower triangular matrix.' ;
122
+ ok $B3 -> isLowerTriangular, ' test for lower triangular degree 3 matrix' ;
123
+ ok !$B4 -> isLowerTriangular, ' not a lower triangular degree 3 matrix.' ;
116
124
117
125
};
118
126
127
+ subtest ' Test if a Matrix is symmetric' => sub {
128
+ my $A = Matrix(5);
129
+ ok $A -> isSymmetric, ' test a degree 1 Matrix of length 1 is symmetric' ;
130
+ my $B = Matrix([ 1, 2 ], [ 2, 3 ]);
131
+ my $C = Matrix([ 1, 2 ], [ 3, 4 ]);
132
+ ok $B -> isSymmetric, ' test a degree 2 symmetric Matrix' ;
133
+ ok !$C -> isSymmetric, ' test a degree 2 nonsymmetric Matrix' ;
134
+ my $D = Matrix($B , $B );
135
+ my $E = Matrix($B , $C );
136
+ ok $D -> isSymmetric, ' test a degree 3 symmetric Matrix' ;
137
+ ok !$E -> isSymmetric, ' test a degree 3 nonsymmetric Matrix' ;
138
+ };
139
+
140
+ subtest ' Test if a Matrix is orthogonal' => sub {
141
+ my $A = Matrix(-1);
142
+ my $B = Matrix( 2);
143
+ ok $A -> isOrthogonal, ' test a degree 1 orthogonal Matrix' ;
144
+ ok !$B -> isOrthogonal, ' test a degree 1 nonorthogonal Matrix' ;
145
+ my $C = Matrix([ 3 / 5, 4 / 5 ], [ -4 / 5, 3 / 5 ]);
146
+ my $D = Matrix([ 1, 2 ], [ 3, 4 ]);
147
+ ok $C -> isOrthogonal, ' test a degree 2 orthogonal Matrix' ;
148
+ ok !$D -> isOrthogonal, ' test a degree 2 nonorthogonal Matrix' ;
149
+ my $E = Matrix($C , [ [ 0, 1 ], [ -1, 0 ] ]);
150
+ my $F = Matrix($D , $C );
151
+ ok $E -> isOrthogonal, ' test a degree 3 orthogonal Matrix' ;
152
+ ok !$F -> isOrthogonal, ' test a degree 3 nonorthogonal Matrix' ;
153
+ };
154
+
155
+ subtest ' Test if Matrix is in (R)REF' => sub {
156
+ my $A1 = Matrix(0);
157
+ my $A2 = Matrix(1);
158
+ my $A3 = Matrix(2);
159
+ my $A4 = Matrix(1, 3, 4);
160
+ my $A5 = Matrix(2, 3, 4);
161
+ my $A6 = Matrix(0, 3, 4);
162
+ my $A7 = Matrix(0, 1, 4);
163
+ ok $A1 -> isRREF, " $A1 is in RREF" ;
164
+ ok $A2 -> isRREF, " $A2 is in RREF" ;
165
+ ok !$A3 -> isRREF, " $A3 is not in RREF" ;
166
+ ok $A4 -> isRREF, " $A4 is in RREF" ;
167
+ ok !$A5 -> isRREF, " $A5 is not in RREF" ;
168
+ ok !$A6 -> isRREF, " $A6 is not in RREF" ;
169
+ ok $A7 -> isRREF, " $A7 is in RREF" ;
170
+
171
+ my $B1 = Matrix([ 1, 2, 3 ], [ 0, 4, 5 ]);
172
+ my $B2 = Matrix([ 1, 2, 3 ], [ 0, 1, 5 ]);
173
+ my $B3 = Matrix([ 1, 0, 3 ], [ 0, 1, 5 ]);
174
+ my $B4 = Matrix([ 0, 1, 3 ], [ 2, 1, 5 ]);
175
+ ok $B1 -> isREF, " $B1 is in REF" ;
176
+ ok !$B1 -> isRREF, " $B1 is not in RREF" ;
177
+ ok $B2 -> isREF, " $B2 is in REF" ;
178
+ ok !$B2 -> isRREF, " $B2 is not in RREF" ;
179
+ ok $B3 -> isREF, " $B3 is in REF" ;
180
+ ok $B3 -> isRREF, " $B3 is in RREF" ;
181
+ ok !$B4 -> isREF, " $B4 is not in REF" ;
182
+ ok !$B4 -> isRREF, " $B4 is not in RREF" ;
183
+ };
184
+
119
185
subtest ' Transpose a Matrix' => sub {
120
186
my $A = Matrix([ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ] ]);
121
187
my $B = Matrix([ [ 1, 5, 9 ], [ 2, 6, 10 ], [ 3, 7, 11 ], [ 4, 8, 12 ] ]);
0 commit comments