Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Associated 2-band OPs Golub Welsch? #29

Closed
dlfivefifty opened this issue Mar 23, 2021 · 7 comments
Closed

Associated 2-band OPs Golub Welsch? #29

dlfivefifty opened this issue Mar 23, 2021 · 7 comments

Comments

@dlfivefifty
Copy link
Member

The two-band analogue of Chebyshev T is now implemented as T = TwoBandJacobi(ρ, -1/2, -1/2, 1/2), orthogonal w.r.t. |x|/(sqrt(1-x^2)sqrt(x^2-ρ^2)). It has the nice property that the Hilbert transform of its weight is 0, so the Hilbert transform is a simple map from T to Q = Associated(T), the associated orthogonal polynomials.

The surprising thing is Q has an orthogonality measure with a delta function at 0, I believe its something like sqrt(1-x^2)sqrt(x^2-ρ^2)/|x| + ρ δ(x) (where the first term is only valid for ρ < |x| <1). This has the annoying feature that Golub--Welsch gives extra points associated with the δ:

julia> ρ = 0.5; T = TwoBandJacobi(ρ, -1/2, -1/2, 1/2);

julia> Q = Associated(T);

julia> golubwelsch(Q[:,Base.OneTo(7)])[1] # grid point at 0 which I don't want
7-element Vector{Float64}:
 -0.9434855817366542
 -0.7905694150420907
 -0.5998624484455107
  7.771561172376096e-16
  0.5998624484455127
  0.790569415042095
  0.9434855817366555

Anyone seen anything like this before and know if there's a modification to Gauss quadrature, i.e. an anti-Gauss–Lobatto that prevents certain points?

I just need this for the expansion in Q. I can work around it by using a Vandermonde matrix. But it's an interesting problem.

@MikaelSlevinsky @TSGut @ajt60gaibb @marcusdavidwebb

@TSGut
Copy link
Member

TSGut commented Mar 23, 2021

There are "anti-Gaussian" quadrature methods which as far as I know interlace the points of Gaussian quadrature. Not sure if that is why you said "anti-Gauss–Lobatto" or if you just meant "the opposite of what Gauss–Lobatto does".

@dlfivefifty
Copy link
Member Author

I meant "opposite of what Gauss-Lobatto" (or Radau): instead of insisting on a specific point, I want to forbid it.

Note its a bit delicate as for even points we get two points tending to (but not exactly) zero

@MikaelSlevinsky
Copy link
Member

Is there a characterization of the non-negative weights that live in the kernel of the Hilbert transform?

In the even case, does the pair of Gauss points breach |x| = ρ?

@dlfivefifty
Copy link
Member Author

Is there a characterization of the non-negative weights that live in the kernel of the Hilbert transform?

I think the kernel is only |x|/(sqrt(1-x^2)sqrt(ρ^2-x^2)).

In the even case, does the pair of Gauss points breach |x| = ρ?

Not even close:

julia> golubwelsch(Q[:,Base.OneTo(2)])[1]
2-element Vector{Float64}:
 -0.3354101966249685
  0.3354101966249685

julia> golubwelsch(Q[:,Base.OneTo(4)])[1]
4-element Vector{Float64}:
 -0.8260064989841912
 -0.10635236062957643
  0.10635236062957698
  0.8260064989841945

julia> golubwelsch(Q[:,Base.OneTo(6)])[1]
6-element Vector{Float64}:
 -0.9146586174230956
 -0.6894624123565193
 -0.03501609669916683
  0.0350160966991655
  0.6894624123565204
  0.9146586174230971

@MikaelSlevinsky
Copy link
Member

That's interesting: I can see why the odd symmetry forces a root at the non-negligible Dirac point mass, but had no idea that it would be "strong" enough to pull other points into zero-weight territory (in the even case).

@dlfivefifty
Copy link
Member Author

It sort of makes sense; since one typically expects finite section to converge

@TSGut
Copy link
Member

TSGut commented Jun 15, 2024

Since two bands were moved out of the package I guess it's fine to close this for now.

@TSGut TSGut closed this as completed Jun 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants