https://github.com/juliaapproximation/annuliorthogonalpolynomials.jl
https://github.com/juliaapproximation/annuliorthogonalpolynomials.jl
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/juliaapproximation/annuliorthogonalpolynomials.jl
- Owner: JuliaApproximation
- License: mit
- Created: 2023-07-18T19:58:01.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-24T16:06:20.000Z (over 1 year ago)
- Last Synced: 2025-12-17T06:38:50.256Z (6 months ago)
- Language: Julia
- Size: 77.1 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## AnnuliOrthogonalPolynomials.jl
[](https://github.com/JuliaApproximation/AnnuliOrthogonalPolynomials.jl/actions)
[](http://codecov.io/github/JuliaApproximation/AnnuliOrthogonalPolynomials.jl?branch=main)
A Julia package for orthogonal polynomials on an annulus.
This code used to be part of [AlgebraicCurveOrthogonalPolynomials.jl](https://github.com/JuliaApproximation/AlgebraicCurveOrthogonalPolynomials.jl).
This experimental package implements `ZernikeAnnulus` and `ComplexZernikeAnnulus`,
families of orthogonal polynomials on the annulus `{ρ² ≤ x² + y² ≤ 1}`
with respect to the weight `(r² - ρ²)ᵃ * (1-r²)ᵇ`. This builds on top of
[SemiclassicalOrthogonalPolynomials.jl](https://github.com/JuliaApproximation/SemiclassicalOrthogonalPolynomials.jl) and [MultivariateOrthogonalPolynomials.jl](https://github.com/JuliaApproximation/MultivariateOrthogonalPolynomials.jl).
```julia
julia> using AnnuliOrthogonalPolynomials, StaticArrays
julia> ρ, a, b = 0.5, 0.0, 0.0;
julia> Z = ZernikeAnnulus(ρ, a, b)
ZernikeAnnulus{Float64}(0.5, 0.0, 0.0)
julia> Z[SVector(0.5,0.2), Block.(1:3)] # Blocked by degree
3-blocked 6-element BlockVector{Float64}:
1.0
───────────────────
0.20000000000000004
0.5000000000000001
───────────────────
1.547298721428197
0.20000000000000007
0.21000000000000008
julia> x,y = first.(axes(Z,1)), last.(axes(Z,1));
julia> u = Z * (Z \ (exp.(x) .* cos.(y))) # Expand in annulus OPs
ZernikeAnnulus{Float64}(0.5, 0.0, 0.0) * [1.0, 9.352800883640776e-18, 0.9999999999999999, -5.2512913921638607e-17, -2.337754850841795e-18, 0.5, 2.153350906504162e-18, 1.1925107582660448e-17, -5.513529126039963e-18, 0.1666666666666666 … ]
julia> u[SVector(0.5,0.2)] # Evaluate expansion
1.6158566135891377
```