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

Orthogonal connection matrix #20

Open
dlfivefifty opened this issue Mar 27, 2018 · 1 comment
Open

Orthogonal connection matrix #20

dlfivefifty opened this issue Mar 27, 2018 · 1 comment

Comments

@dlfivefifty
Copy link
Member

There are issues with the current connection coefficient matrix introducing bad conditioning:

V = SymTriOperator([zeros(5); -ones(6); zeros(10); -ones(7)],zeros(4))
J = -Δ + V
Λ, U = eig(J)
norm(Matrix(U[1:100,1:100])) # 2.3265722544996794e28

However, from the spectral measure we know we can construct an orthogonal connection coefficients Q:

Δ = freejacobioperator()
K = SymTriOperator(0.01ones(3),zeros(4))
J = Δ + K
μ = spectralmeasure(J)


Λ, U = eig(J)

M = Multiplication(1./sqrt.q), rangespace(U))
Q = M*U
norm((Q'*Q - I)[1:10,1:10])  # ≈ 0

# show it's still a conversion
C = connectioncoeffsoperator(J)
X = Multiplication(Fun(), Ultraspherical(1)) # Δ with right spaces
(X*Q - Q*J)[1:10,1:10] |> norm   # ≈ 0

By definition, Q is well conditioned. Can we recover Q in a reasonable form without calculating the badly conditioned U?

@dlfivefifty
Copy link
Member Author

FYI we know it can't be Hessenberg since the lower bandwidth is equal to the lowerbandwidth of M

Note also that while M is not technically banded, it of course can be approximated by a polynomial. But this isn't great since we want complexity given by the perturbation size, nothing else. However, that said we know that f^(-1/2) is a solution to a banded system

f_nsqrt = [ldirichlet() ; f*D + 1/2*I] \ [sqrt(f(-1)); 0]

Since in this case f = μ.q is a polynomial of degree dictated by the perturbation, we know that Q can be encoded by a fixed number of entries.

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

1 participant