jipolanco / BSplineKit.jl

A collection of B-spline tools in Julia
https://jipolanco.github.io/BSplineKit.jl/dev/
MIT License
50 stars 9 forks source link

Faster LU factorisation of collocation matrices #15

Closed jipolanco closed 3 years ago

jipolanco commented 3 years ago

This PR adds a port of the LU factorisation by de Boor, which avoids pivoting thanks to the total positivity property of banded collocation matrices used for spline calculations.

This allows to reduce memory usage of the factorisation, since there is no need to allocate extra bands as in the pivoted implementation of BandedMatrices / LAPACK. The factorisation itself seems to be much faster as well.

The implementation is directly based off the Fortran 90 version of de Boor's FORTRAN77 code, made by John Burkardt.

Things to do:

codecov-io commented 3 years ago

Codecov Report

Merging #15 (d00c908) into master (34fbbac) will increase coverage by 0.45%. The diff coverage is 97.16%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #15      +/-   ##
==========================================
+ Coverage   91.81%   92.26%   +0.45%     
==========================================
  Files          18       19       +1     
  Lines         855      957     +102     
==========================================
+ Hits          785      883      +98     
- Misses         70       74       +4     
Impacted Files Coverage Δ
src/Collocation/matrix.jl 97.00% <97.00%> (ø)
src/Collocation/Collocation.jl 89.28% <100.00%> (+0.82%) :arrow_up:
src/Interpolations/Interpolations.jl 97.43% <100.00%> (-0.13%) :arrow_down:
src/Splines/spline.jl 96.84% <0.00%> (-1.06%) :arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 34fbbac...d00c908. Read the comment docs.