8080function divdiff (HQ:: HalfWeighted{:a,<:Any,<:SemiclassicalJacobi} , HP:: HalfWeighted{:a,<:Any,<:SemiclassicalJacobi} )
8181 Q = HQ. P
8282 P = HP. P
83- t = P. t
8483 a = Q. a
85- A,B,C = recurrencecoefficients (P)
86- α,β,γ = recurrencecoefficients (Q)
84+ A,B,_ = recurrencecoefficients (P)
85+ α,β,_ = recurrencecoefficients (Q)
8786 d = AccumulateAbstractVector (* , A ./ α)
88- v1 = MulAddAccumulate (Vcat (0 ,0 ,α[2 : ∞] ./ α), Vcat (0 ,β))
89- v2 = MulAddAccumulate (Vcat (0 ,0 ,A[2 : ∞] ./ α), Vcat (0 ,B[1 ], B[2 : end ] .* d))
90-
91- _BandedMatrix (
92- Vcat (
93- ((a: ∞) .* v2 .- ((a+ 1 ): ∞) .* Vcat (1 ,v1[2 : end ] .* d))' ,
94- (((a+ 1 ): ∞) .* Vcat (1 ,d))' ), ℵ₀, 0 ,1 )
87+ v1 = MulAddAccumulate (Vcat (0 ,α[2 : ∞] ./ α), β)
88+ v2 = MulAddAccumulate (Vcat (0 ,A[2 : ∞] ./ α), Vcat (B[1 ], B[2 : end ] .* d))
89+ p = ((a+ 1 ): ∞) .* v2 .- ((a+ 2 ): ∞) .* v1 .* d
90+ q = ((a+ 1 ): ∞) .* Vcat (1 ,d)
91+ return LazyBandedMatrices. Bidiagonal (q, p, :U )
9592end
9693
9794function divdiff (HQ:: HalfWeighted{:b,<:Any,<:SemiclassicalJacobi} , HP:: HalfWeighted{:b,<:Any,<:SemiclassicalJacobi} )
9895 Q = HQ. P
9996 P = HP. P
100- t = P. t
10197 b = Q. b
102- A,B,C = recurrencecoefficients (P)
103- α,β,γ = recurrencecoefficients (Q)
98+ A,B,_ = recurrencecoefficients (P)
99+ α,β,_ = recurrencecoefficients (Q)
104100 d = AccumulateAbstractVector (* , A ./ α)
105101 d2 = AccumulateAbstractVector (* , A ./ Vcat (1 ,α))
106- v1 = MulAddAccumulate (Vcat (0 ,0 ,α[2 : ∞] ./ α), Vcat (0 ,β))
107- v2 = MulAddAccumulate (Vcat (0 ,0 ,A[2 : ∞] ./ α), Vcat (0 ,B[1 ], B[2 : end ] .* d))
108-
109- _BandedMatrix (
110- Vcat (
111- (- (b: ∞) .* v2 .+ ((b+ 1 ): ∞) .* Vcat (1 ,v1[2 : end ] .* d) .+ Vcat (0 ,(1 : ∞) .* d2))' ,
112- (- ((b+ 1 ): ∞) .* Vcat (1 ,d))' ), ℵ₀, 0 ,1 )
102+ v1 = MulAddAccumulate (Vcat (0 ,α[2 : ∞] ./ α), β)
103+ v2 = MulAddAccumulate (Vcat (0 ,A[2 : ∞] ./ α), Vcat (B[1 ], B[2 : end ] .* d))
104+ p = - ((b+ 1 ): ∞) .* v2 .+ ((b+ 2 ): ∞) .* v1 .* d .+ (1 : ∞) .* d2
105+ q = - ((b+ 1 ): ∞) .* Vcat (1 ,d)
106+ return LazyBandedMatrices. Bidiagonal (q, p, :U )
113107end
114108
115109function divdiff (HQ:: HalfWeighted{:c,<:Any,<:SemiclassicalJacobi} , HP:: HalfWeighted{:c,<:Any,<:SemiclassicalJacobi} )
116110 Q = HQ. P
117111 P = HP. P
118112 t = P. t
119113 c = Q. c
120- A,B,C = recurrencecoefficients (P)
121- α,β,γ = recurrencecoefficients (Q)
114+ A,B,_ = recurrencecoefficients (P)
115+ α,β,_ = recurrencecoefficients (Q)
122116 d = AccumulateAbstractVector (* , A ./ α)
123117 d2 = AccumulateAbstractVector (* , A ./ Vcat (1 ,α))
124- v1 = MulAddAccumulate (Vcat (0 ,0 ,α[2 : ∞] ./ α), Vcat (0 ,β))
125- v2 = MulAddAccumulate (Vcat (0 ,0 ,A[2 : ∞] ./ α), Vcat (0 ,B[1 ], B[2 : end ] .* d))
126- _BandedMatrix (
127- Vcat (
128- (- (c: ∞) .* v2 .+ ((c+ 1 ): ∞) .* Vcat (1 ,v1[2 : end ] .* d) .+ Vcat (0 ,(t: t: ∞) .* d2))' ,
129- (- ((c+ 1 ): ∞) .* Vcat (1 ,d))' ), ℵ₀, 0 ,1 )
118+ v1 = MulAddAccumulate (Vcat (0 ,α[2 : ∞] ./ α), β)
119+ v2 = MulAddAccumulate (Vcat (0 ,A[2 : ∞] ./ α), Vcat (B[1 ], B[2 : end ] .* d))
120+ p = - ((c+ 1 ): ∞) .* v2 .+ ((c+ 2 ): ∞) .* v1 .* d .+ (t: t: ∞) .* d2
121+ q = - ((c+ 1 ): ∞) .* Vcat (1 ,d)
122+ return LazyBandedMatrices. Bidiagonal (q, p, :U )
130123end
131124
132125function diff (HP:: HalfWeighted{:a,<:Any,<:SemiclassicalJacobi} ; dims= 1 )
@@ -165,8 +158,9 @@ function divdiff(HQ::HalfWeighted{:ab}, HP::HalfWeighted{:ab})
165158 e = AccumulateAbstractVector (* , Vcat (1 ,A ./ α))
166159 f = MulAddAccumulate (Vcat (0 ,0 ,A[2 : end ] ./ α[2 : end ]), Vcat (0 , (B./ α) .* e))
167160 g = cumsum (β ./ α)
168- _BandedMatrix (Vcat ((((a+ 1 ): ∞) .* e .- ((b+ a+ 1 ): ∞). * f .+ ((a+ b+ 2 ): ∞) .* e .* g )' ,
169- (- ((a+ b+ 2 ): ∞) .* d)' ),ℵ₀,1 ,0 )
161+ p = ((a+ 1 ): ∞) .* e .- ((b+ a+ 1 ): ∞). * f .+ ((a+ b+ 2 ): ∞) .* e .* g
162+ q = - ((a+ b+ 2 ): ∞) .* d
163+ return LazyBandedMatrices. Bidiagonal (p, q, :L )
170164end
171165
172166
@@ -182,8 +176,9 @@ function divdiff(HQ::HalfWeighted{:bc}, HP::HalfWeighted{:bc})
182176 e = AccumulateAbstractVector (* , Vcat (1 ,A ./ α))
183177 f = MulAddAccumulate (Vcat (0 ,0 ,A[2 : end ] ./ α[2 : end ]), Vcat (0 , (B./ α) .* e))
184178 g = cumsum (β ./ α)
185- _BandedMatrix (Vcat ((- ((t+ 1 )* (0 : ∞) .+ (t* (b+ 1 ) + c+ 1 )) .* e .+ ((c+ b+ 1 ): ∞). * f .- ((b+ c+ 2 ): ∞) .* e .* g )' ,
186- (((b+ c+ 2 ): ∞) .* d)' ),ℵ₀,1 ,0 )
179+ p = - ((t+ 1 )* (0 : ∞) .+ (t* (b+ 1 ) + c+ 1 )) .* e .+ ((c+ b+ 1 ): ∞). * f .- ((b+ c+ 2 ): ∞) .* e .* g
180+ q = ((b+ c+ 2 ): ∞) .* d
181+ return LazyBandedMatrices. Bidiagonal (p, q, :L )
187182end
188183
189184function divdiff (HQ:: HalfWeighted{:ac} , HP:: HalfWeighted{:ac} )
@@ -198,8 +193,9 @@ function divdiff(HQ::HalfWeighted{:ac}, HP::HalfWeighted{:ac})
198193 e = AccumulateAbstractVector (* , Vcat (1 ,A ./ α))
199194 f = MulAddAccumulate (Vcat (0 ,0 ,A[2 : end ] ./ α[2 : end ]), Vcat (0 , (B./ α) .* e))
200195 g = cumsum (β ./ α)
201- _BandedMatrix (Vcat ((t* ((a+ 1 ): ∞) .* e .- ((c+ a+ 1 ): ∞). * f .+ ((a+ c+ 2 ): ∞) .* e .* g )' ,
202- (- ((a+ c+ 2 ): ∞) .* d)' ),ℵ₀,1 ,0 )
196+ p = t* ((a+ 1 ): ∞) .* e .- ((c+ a+ 1 ): ∞). * f .+ ((a+ c+ 2 ): ∞) .* e .* g
197+ q = - ((a+ c+ 2 ): ∞) .* d
198+ return LazyBandedMatrices. Bidiagonal (p, q, :L )
203199end
204200
205201
0 commit comments