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

What are the entries of a diagonal operator? #19

Open
dlfivefifty opened this issue Sep 9, 2019 · 4 comments
Open

What are the entries of a diagonal operator? #19

dlfivefifty opened this issue Sep 9, 2019 · 4 comments

Comments

@dlfivefifty
Copy link
Member

I had been thinking of operators in the kernel sense, that is,
$$
(K u)(x) = \int_a^b K(x,y) u(y) dy
$$
So that K[x,y] is equivalent to K(x,y).

But then we are using diagonal operators. One might expect QuasiDiagonal(one.(Inclusion(-1...1))) to be the identity operator, and thats essentially how we've been using it. The issue is that the identity operator corresponds to K(x,y) = δ(y-x) so is actual infinite on the diagonal.

Is this the convention we want? E.g., QuasiDiagonal(sqrt.(1-x.^2))[0.1,0.1] == ∞?

@jagot
Copy link
Member

jagot commented Sep 10, 2019

I usually think of diagonal operators (mostly potentials in my case) as simply function multiplication:

g(x) = U(x) f(x)

where U(x) is the diagonal operator. If you want it inside an integral, then you'd need the Dirac delta function, which of course complicates things if you want to index the operator itself, but is that something you need often?

In CoulombIntegrals.jl, I calculate the repulsion between two electrons, 1/abs(r_1 - r_2), by solving Poisson's problem over-and-over again, each time the electrons' wave functions have changed. The solution is a new potential in coefficient space, i.e. the distribution of e.g. electron 1 along r_1 forms a potential for electron 2. This is also a function, but only known at discrete points, e.g. a diagonal matrix acting on the coefficients of electron 2. Should this still be a QuasiDiagonal? I don't think so, but at the same time, I usually want to merge all potentials into one before acting with the total operator to save FLOPS.

@dlfivefifty
Copy link
Member Author

dlfivefifty commented Sep 10, 2019

Right, that’s exactly how I’ve been thinking of them. There is no actual need for getindex except to make sure we are conceptualising them.

Perhaps getindex is best thought of in terms of the delta function. that is K[s,t] is equivalent to <δ_s, K*δ_t> or in other words:

<δ_s, \int K(x,y) δ_t(y) dy > = < δ_s, K(x,t) > = K(s,t)

Perhaps the issue is the usage of QuasiDiagonal / Diagonal, as it hints that it puts the quasi-vector on the diagonal, where really we have Inf * v on the diagonal of QuasiDiagonal(v). Is there another name for this operation?

@jagot
Copy link
Member

jagot commented Sep 10, 2019

Maybe something with PointWise*? In physics, we'd call this a local operator, whereas non-diagonal kernels are non-local; I prefer this terminology to point-wise.

@dlfivefifty
Copy link
Member Author

Yes these are local operators, but so are derivatives. Pointwise is too application specific. Perhaps follow ApproxFun and call it Multiplication?

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

2 participants