JuliaApproximation / SingularIntegralEquations.jl

Julia package for solving singular integral equations
Other
62 stars 11 forks source link

Feat convolution #79

Closed MikaelSlevinsky closed 8 years ago

MikaelSlevinsky commented 8 years ago

This is really a prototype, but is mergeable.

A glance at the single-layer integral operator with translation-invariance on a circular boundary reveals that the entire single-layer operator is diagonalized by the Laurent basis. This contrasts with only diagonalizing diagonal singularities in the Chebyshev case (as described in the Slevinsky Olver pre-print).

This provides a prototype of a well-conditioned O(k^2) Helmholtz solver for circular boundaries: it takes O(k) coefficients to resolve the convolution integral operator, and thus each diagonal entry takes O(k) flops to compute; the complexity follows since the solution is expected to take O(k) degrees of freedom for resolution.

I think the raw timings are impressive on their own. At k = 10_000, it takes 50 seconds to solve, (while the hybrid numerical asymptotic BEM method is still setting up!)

Potential to combine with the hierarchical solver & also the spectral mapping theorem for optimal complexity in more general settings.

MikaelSlevinsky commented 8 years ago

One snag is that ApproxFun's heuristic constructor horrendously over-resolves oscillatory functions. Thus, it takes care to show quadratic complexity plots at the moment.

dlfivefifty commented 8 years ago

This sounds cool!

Any updates on the axiomatic constructor?

MikaelSlevinsky commented 8 years ago

Developing an axiomatic constructor in floating-point is a combination that requires tedious proofs!

Axiomatic means setting up the:

I do think it's possible though.