|
1 | 1 | module SemiclassicalOrthogonalPolynomials
|
2 | 2 | using ClassicalOrthogonalPolynomials: WeightedOPLayout
|
3 | 3 | using ClassicalOrthogonalPolynomials, FillArrays, LazyArrays, ArrayLayouts, QuasiArrays, InfiniteArrays, ContinuumArrays, LinearAlgebra, BandedMatrices,
|
4 |
| - SpecialFunctions, HypergeometricFunctions, SingularIntegrals, InfiniteLinearAlgebra |
| 4 | + SpecialFunctions, HypergeometricFunctions, InfiniteLinearAlgebra |
5 | 5 |
|
6 |
| -import Base: getindex, axes, size, \, /, *, +, -, summary, ==, copy, sum, unsafe_getindex, convert, OneTo |
| 6 | +import Base: getindex, axes, size, \, /, *, +, -, summary, ==, copy, sum, unsafe_getindex, convert, OneTo, diff |
7 | 7 |
|
8 | 8 | import ArrayLayouts: MemoryLayout, ldiv, diagonaldata, subdiagonaldata, supdiagonaldata
|
9 | 9 | import BandedMatrices: bandwidths, AbstractBandedMatrix, BandedLayout, _BandedMatrix
|
10 | 10 | import LazyArrays: resizedata!, paddeddata, CachedVector, CachedMatrix, CachedAbstractVector, LazyMatrix, LazyVector, arguments, ApplyLayout, colsupport, AbstractCachedVector, ApplyArray,
|
11 | 11 | AccumulateAbstractVector, LazyVector, AbstractCachedMatrix, BroadcastLayout
|
12 | 12 | import ClassicalOrthogonalPolynomials: OrthogonalPolynomial, recurrencecoefficients, jacobimatrix, normalize, _p0, UnitInterval, orthogonalityweight, NormalizedOPLayout,
|
13 | 13 | Bidiagonal, Tridiagonal, SymTridiagonal, symtridiagonalize, normalizationconstant, LanczosPolynomial,
|
14 |
| - OrthogonalPolynomialRatio, Weighted, WeightLayout, UnionDomain, oneto, WeightedBasis, HalfWeighted, |
| 14 | + OrthogonalPolynomialRatio, Weighted, AbstractWeightLayout, UnionDomain, oneto, WeightedBasis, HalfWeighted, |
15 | 15 | golubwelsch, AbstractOPLayout, weight, cholesky_jacobimatrix, qr_jacobimatrix, isnormalized
|
16 |
| -import SingularIntegrals: Hilbert, Associated, associated |
| 16 | + |
17 | 17 | import InfiniteArrays: OneToInf, InfUnitRange
|
18 | 18 | import ContinuumArrays: basis, Weight, @simplify, AbstractBasisLayout, BasisLayout, MappedBasisLayout, grid, plotgrid, _equals, ExpansionLayout
|
19 | 19 | import FillArrays: SquareEye
|
20 | 20 | import HypergeometricFunctions: _₂F₁general2
|
21 | 21 |
|
22 |
| -export LanczosPolynomial, Legendre, Normalized, normalize, SemiclassicalJacobi, SemiclassicalJacobiWeight, WeightedSemiclassicalJacobi, OrthogonalPolynomialRatio, TwoBandJacobi, TwoBandWeight |
| 22 | +export LanczosPolynomial, Legendre, Normalized, normalize, SemiclassicalJacobi, SemiclassicalJacobiWeight, WeightedSemiclassicalJacobi, OrthogonalPolynomialRatio |
23 | 23 |
|
24 | 24 | """"
|
25 | 25 | SemiclassicalJacobiWeight(t, a, b, c)
|
@@ -72,8 +72,8 @@ function jacobiexpansion(w::SemiclassicalJacobiWeight{T}) where T
|
72 | 72 | LanczosPolynomial(@.(x^a * (1-x)^b * (t-x)^c), P).w
|
73 | 73 | end
|
74 | 74 |
|
75 |
| -_equals(::WeightLayout, ::ExpansionLayout, A::SemiclassicalJacobiWeight, B) = jacobiexpansion(A) == B |
76 |
| -_equals(::ExpansionLayout, ::WeightLayout, A, B::SemiclassicalJacobiWeight) = A == jacobiexpansion(B) |
| 75 | +_equals(::AbstractWeightLayout, ::ExpansionLayout, A::SemiclassicalJacobiWeight, B) = jacobiexpansion(A) == B |
| 76 | +_equals(::ExpansionLayout, ::AbstractWeightLayout, A, B::SemiclassicalJacobiWeight) = A == jacobiexpansion(B) |
77 | 77 |
|
78 | 78 |
|
79 | 79 | """
|
@@ -385,13 +385,13 @@ end
|
385 | 385 |
|
386 | 386 | \(w_A::Weighted{<:Any,<:SemiclassicalJacobi}, w_B::Weighted{<:Any,<:SemiclassicalJacobi}) = convert(WeightedBasis, w_A) \ convert(WeightedBasis, w_B)
|
387 | 387 |
|
388 |
| -massmatrix(P::SemiclassicalJacobi) = Diagonal(Fill(sum(orthogonalityweight(P)),∞)) |
| 388 | +weightedgrammatrix(P::SemiclassicalJacobi) = Diagonal(Fill(sum(orthogonalityweight(P)),∞)) |
389 | 389 |
|
390 | 390 | @simplify function *(Ac::QuasiAdjoint{<:Any,<:SemiclassicalJacobi}, wB::WeightedBasis{<:Any,<:SemiclassicalJacobiWeight,<:SemiclassicalJacobi})
|
391 | 391 | A = parent(Ac)
|
392 | 392 | w,B = arguments(wB)
|
393 | 393 | P = SemiclassicalJacobi(w.t, w.a, w.b, w.c)
|
394 |
| - (P\A)' * massmatrix(P) * (P \ B) |
| 394 | + (P\A)' * weightedgrammatrix(P) * (P \ B) |
395 | 395 | end
|
396 | 396 |
|
397 | 397 | function ldiv(Q::SemiclassicalJacobi, f::AbstractQuasiVector)
|
@@ -440,8 +440,6 @@ convert(::Type{WeightedBasis}, Q::HalfWeighted{:ab,T,<:SemiclassicalJacobi}) whe
|
440 | 440 | convert(::Type{WeightedBasis}, Q::HalfWeighted{:bc,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, zero(T),Q.P.b,Q.P.c) .* Q.P
|
441 | 441 | convert(::Type{WeightedBasis}, Q::HalfWeighted{:ac,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, Q.P.a,zero(T),Q.P.c) .* Q.P
|
442 | 442 |
|
443 |
| - |
444 |
| -include("twoband.jl") |
445 | 443 | include("derivatives.jl")
|
446 | 444 |
|
447 | 445 |
|
|
0 commit comments