@@ -89,10 +89,45 @@ using LazyArrays: LazyLayout
89
89
end
90
90
91
91
@testset " Chebyshev" begin
92
- R0 = BandedMatrix (0 => [1 ; Fill (0.5 ,∞)], 2 => Fill (- 0.5 ,∞))
92
+ R0 = BandedMatrices. _BandedMatrix (Vcat (- Ones (1 ,∞)/ 2 ,
93
+ Zeros (1 ,∞),
94
+ Hcat (Ones (1 ,1 ),Ones (1 ,∞)/ 2 )), ℵ₀, 0 ,2 )
95
+
93
96
D0 = BandedMatrix (1 => 1 : ∞)
94
97
R1 = BandedMatrix (0 => 1 ./ (1 : ∞), 2 => - 1 ./ (3 : ∞))
95
98
96
- BidiagonalConjugation (R1 , D0, R0 , :U )
99
+ B = BidiagonalConjugation (R0 ' , D0' , R1 ' , :L ) '
97
100
end
98
101
end
102
+
103
+
104
+ """
105
+ tridiagonal(A, B) == Tridiagonal(A*B)
106
+ """
107
+ function tridiagonalmul (A, B)
108
+ T = promote_type (eltype (A), eltype (B))
109
+ UX = Tridiagonal (Vector {T} (undef, n- 1 ), Vector {T} (undef, n), Vector {T} (undef, n- 1 ))
110
+
111
+ for j = 1 : n- 1
112
+ UX. d[j] = U. data[3 ,j]* X. d[j] + U. data[2 ,j]* X. dl[j]
113
+ end
114
+ UX. d[n] = U. data[3 ,n]* X. d[n]
115
+
116
+ for j = 1 : n- 1
117
+ UX. dl[j] = U. data[3 ,j]* X. d[j] + U. data[2 ,j]* X. dl[j]
118
+ end
119
+ end
120
+
121
+ @testset " TridiagonalConjugation" begin
122
+ R0 = BandedMatrices. _BandedMatrix (Vcat (- Ones (1 ,∞)/ 2 ,
123
+ Zeros (1 ,∞),
124
+ Hcat (Ones (1 ,1 ),Ones (1 ,∞)/ 2 )), ℵ₀, 0 ,2 )
125
+ X_T = LazyBandedMatrices. Tridiagonal (Vcat (1.0 , Fill (1 / 2 ,∞)), Zeros (∞), Fill (1 / 2 ,∞))
126
+
127
+ n = 1000 ; @time U = V = R0[1 : n,1 : n]
128
+ @time X = Tridiagonal (Vector (X_T. dl[1 : n- 1 ]), Vector (X_T. d[1 : n]), Vector (X_T. du[1 : n- 1 ]))
129
+
130
+ @time U* X
131
+ T = Float64
132
+
133
+ end
0 commit comments