JuliaApproximation / SemiclassicalOrthogonalPolynomials.jl

A Julia repository for semiclassical orthogonal polynomials
MIT License
7 stars 3 forks source link

Lowering operator for classical OPs #40

Closed MarcoFasondini closed 3 years ago

MarcoFasondini commented 3 years ago

Although this can be done with ClassicalOrthogonalPolynomials.jl, I tried


p1 = SemiclassicalJacobi(0, 1, 0, 0)
p3 = SemiclassicalJacobi(0, 3, 0, 0)
p3\p1

((ℵ₀×ℵ₀ Diagonal{Float64, Fill{Float64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}} with indices OneToInf()×OneToInf()) * ((ℵ₀×ℵ₀ LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}} with indices OneToInf()×OneToInf()) * (ℵ₀×ℵ₀ LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}} with indices OneToInf()×OneToInf()) with indices OneToInf()×OneToInf()) with indices OneToInf()×OneToInf()) * (ℵ₀×ℵ₀ Diagonal{Float64, Fill{Float64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}} with indices OneToInf()×OneToInf()) with indices OneToInf()×OneToInf():
 NaN    NaN    NaN       ⋅      ⋅   …  
    ⋅   NaN    NaN    NaN       ⋅      
    ⋅      ⋅   NaN    NaN    NaN       
    ⋅      ⋅      ⋅   NaN    NaN       
    ⋅      ⋅      ⋅      ⋅   NaN       
    ⋅      ⋅      ⋅      ⋅      ⋅   …  
    ⋅      ⋅      ⋅      ⋅      ⋅      
    ⋅      ⋅      ⋅      ⋅      ⋅      
    ⋅      ⋅      ⋅      ⋅      ⋅      
    ⋅      ⋅      ⋅      ⋅      ⋅      
    ⋅      ⋅      ⋅      ⋅      ⋅   …  
    ⋅      ⋅      ⋅      ⋅      ⋅      
    ⋅      ⋅      ⋅      ⋅      ⋅      
   ⋮                                ⋱  
dlfivefifty commented 3 years ago

I think it requires t > 1

TSGut commented 3 years ago

Yes, this requires t > 1 though I think it should probably tell the user this instead of returning NaN operators. Should be a simple check somewhere, I'll have a look.