1
- using InfiniteLinearAlgebra, BandedMatrices, LazyArrays, FillArrays, LinearAlgebra, Test
1
+ using InfiniteLinearAlgebra, InfiniteArrays, BandedMatrices, LazyArrays, FillArrays, LinearAlgebra, Test
2
2
import InfiniteLinearAlgebra: LowerHessenbergQ, tail_de, toeptail, InfToeplitz, PertToeplitz
3
3
import BandedMatrices: _BandedMatrix
4
4
5
5
@testset " Inf QL" begin
6
6
@testset " Toeplitz QLHessenberg" begin
7
- @testset " Derivation" begin
8
- A = BandedMatrix (- 1 => Fill (2 ,∞), 0 => Fill (5 ,∞), 1 => Fill (0.5 ,∞))
9
- a = reverse (A. data. args[1 ])
10
- d,e = tail_de (a)
11
- X = [transpose (a); 0 d e]
12
- Q = LowerHessenbergQ (Fill (ql! (X). Q,∞))
13
- L = _BandedMatrix (Hcat ([e; X[2 ,2 ]; X[2 ,1 ]], X[2 ,end : - 1 : 1 ] * Ones {Float64} (1 ,∞)), ℵ₀, 2 , 0 )
14
- Qn,Ln = ql (A[1 : 1000 ,1 : 1000 ])
15
- @test Q[1 : 10 ,1 : 10 ] ≈ Qn[1 : 10 ,1 : 10 ]
16
- @test Q' A isa MulMatrix
17
- @test Array ((Q' A)[1 : 10 ,1 : 10 ]) ≈ [(Q' A)[k,j] for k= 1 : 10 ,j= 1 : 10 ]
18
- @test (Q' A)[1 : 10 ,1 : 10 ] ≈ Ln[1 : 10 ,1 : 10 ] ≈ L[1 : 10 ,1 : 10 ]
19
-
20
- A = BandedMatrix (- 1 => Fill (2 ,∞), 0 => Fill (5 + im,∞), 1 => Fill (0.5 ,∞))
21
- a = reverse (A. data. args[1 ])
22
- d,e = tail_de (a)
23
- X = [transpose (a); 0 d e]
24
- q = ql! (X). Q
25
- Q = LowerHessenbergQ (Fill (q,∞))
26
- L = _BandedMatrix (Hcat ([e; X[2 ,2 ]; X[2 ,1 ]], X[2 ,end : - 1 : 1 ] * Ones {Float64} (1 ,∞)), ℵ₀, 2 , 0 )
27
- Qn,Ln = ql (A[1 : 1000 ,1 : 1000 ])
28
- @test Q[1 : 10 ,1 : 10 ] ≈ Qn[1 : 10 ,1 : 10 ] * diagm (0 => [1 ; - Ones (9 )] )
29
- @test (Q' A)[1 : 10 ,1 : 10 ] ≈ diagm (0 => [1 ; - Ones (9 )] ) * Ln[1 : 10 ,1 : 10 ] ≈ L[1 : 10 ,1 : 10 ]
30
- end
31
-
32
7
@testset " Tridiagonal Toeplitz" begin
33
8
for (Z,A,B) in ((2.0 ,5.1 ,0.5 ), (2.0 ,2.2 ,0.5 ), (2.0 ,- 2.2 ,0.5 ), (2.0 ,- 5.1 ,0.5 ),
34
9
(0.5 ,5.1 ,2.0 ), (0.5 ,- 5.1 ,2.0 ))
@@ -179,4 +154,29 @@ import BandedMatrices: _BandedMatrix
179
154
u = F \ b
180
155
@test (A* u)[1 : 10 ] ≈ [1 ; zeros (9 )]
181
156
end
157
+
158
+ @testset " Derivation" begin
159
+ A = BandedMatrix (- 1 => Fill (2 ,∞), 0 => Fill (5 ,∞), 1 => Fill (0.5 ,∞))
160
+ a = reverse (A. data. args[1 ])
161
+ d,e = tail_de (a)
162
+ X = [transpose (a); 0 d e]
163
+ Q = LowerHessenbergQ (Fill (ql! (X). Q,∞))
164
+ L = _BandedMatrix (Hcat ([e; X[2 ,2 ]; X[2 ,1 ]], X[2 ,end : - 1 : 1 ] * Ones {Float64} (1 ,∞)), ℵ₀, 2 , 0 )
165
+ Qn,Ln = ql (A[1 : 1000 ,1 : 1000 ])
166
+ @test Q[1 : 10 ,1 : 10 ] ≈ Qn[1 : 10 ,1 : 10 ]
167
+ @test Q' A isa MulMatrix
168
+ @test Array ((Q' A)[1 : 10 ,1 : 10 ]) ≈ [(Q' A)[k,j] for k= 1 : 10 ,j= 1 : 10 ]
169
+ @test (Q' A)[1 : 10 ,1 : 10 ] ≈ Ln[1 : 10 ,1 : 10 ] ≈ L[1 : 10 ,1 : 10 ]
170
+
171
+ A = BandedMatrix (- 1 => Fill (2 ,∞), 0 => Fill (5 + im,∞), 1 => Fill (0.5 ,∞))
172
+ a = reverse (A. data. args[1 ])
173
+ d,e = tail_de (a)
174
+ X = [transpose (a); 0 d e]
175
+ q = ql! (X). Q
176
+ Q = LowerHessenbergQ (Fill (q,∞))
177
+ L = _BandedMatrix (Hcat ([e; X[2 ,2 ]; X[2 ,1 ]], X[2 ,end : - 1 : 1 ] * Ones {Float64} (1 ,∞)), ℵ₀, 2 , 0 )
178
+ Qn,Ln = ql (A[1 : 1000 ,1 : 1000 ])
179
+ @test Q[1 : 10 ,1 : 10 ] ≈ Qn[1 : 10 ,1 : 10 ] * diagm (0 => [1 ; - Ones (9 )] )
180
+ @test (Q' A)[1 : 10 ,1 : 10 ] ≈ diagm (0 => [1 ; - Ones (9 )] ) * Ln[1 : 10 ,1 : 10 ] ≈ L[1 : 10 ,1 : 10 ]
181
+ end
182
182
end
0 commit comments