|
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