Closed dlfivefifty closed 8 years ago
For k=0.1
the two are tied! (Probably the cost is dominated by constructing the operator)
@time ∂u∂n = ⨍[G]\uiΓ # 0.001622 seconds (9.53 k allocations: 871.625 KB)
@time u=⨍[G][1:10,1:10]\cfs # 0.001138 seconds (4.63 k allocations: 306.406 KB)
It could even use a Cholesky factorization for (formally) positive definite fundamental solutions.
Cholesky or LDLT could work provided:
LowRankFun(...;method=:Cholesky)
returns a new type such as CholeskyFun
or SymmetricLowRankFun
getindex(::Operator,::CholeskyFun)
returns a new type such as SPDBandedOperator
or getindex(::Operator,::SymmetricLowRankFun)
returns a new type such as SymmetricBandedOperator
SPDBandedOperator
results in a SPDBandedMatrix
or populating a SymmetricBandedOperator
results in a SymmetricBandedMatrix
LL'
for SPDBandedMatrix
or LDL'
for SymmetricBandedMatrix
I think the new qrfact
mitigates the benefits of doing this automatically.
I think the following timing suggests that we would perform significantly better using truncation and banded matrix :
It's based on LU, so there may be inaccuracies introduced, but in this case they match to
8.9e-12