A Julia package for orthogonal polynomials on algebraic curves
This package contains ongoing research on orthogonal polynomials on
algebraic curves. That is, given an algebraic curve in 2D defined by
S = {(x,y) : p(x,y) = 0} for some bivariate polynomial p we wish
to construct polynomials orthogonal with respect to an inner product
supported on a subset Ω ⊆ S. Note to avoid degenerecies these polynomials need to
be thought of as polynomials modulo the vanishing ideal I(S) associated to S.
The general theory and construction is not at yet possible, so we
outline some specific cases that we have implemented below.
This is funded by a Leverhulme Trust Research Project Grant on "Constructive approximation on algebraic curves and surfaces".
We can construct orthogonal polynomials on an arc, that is,
Ω = {(cos(θ), sin(θ)) : a ≤ θ ≤ b}, which is a subset of
the circle {(x,y) : x^2 + y^2 = 1}.
We parameterise points on the circle by angle, using a special
type CircleCoordinate(θ):
julia> CircleCoordinate(0.1)
2-element CircleCoordinate{Float64} with indices SOneTo(2):
0.9950041652780258
0.09983341664682815For now we only support the half circle y ≥ 0 with the
weight y^a, which we construct via UltrasphericalArc(a),
which is implemented in the framework of ContinuumArrays.jl:
julia> P = UltrasphericalArc() # uniform weight on the arc
UltrasphericalArc(0.0)
julia> P[CircleCoordinate(0.1),1:5] # first 5 polynomials
5-element Array{Float64,1}:
1.0
0.9950041652780258
0.7024490016371341
2.030105652576658
0.06160390817639964Note there are two (and only two) degree-d polynomials
apart from d = 1. This is accessible as the columns of P
are blocked a la BlockArrays.jl:
julia> P[CircleCoordinate(0.1), Block.(1:3)]
3-blocked 5-element PseudoBlockArray{Float64,1,Array{Float64,1},Tuple{BlockedUnitRange{StepRange{Int64,Int64}}}}:
1.0
───────────────────
0.9950041652780258
0.7024490016371341
───────────────────
2.030105652576658
0.06160390817639964