Linear time-invariant ODEs with nil potent matrices yield polynomial solutions. It is faster to calculate those instead of invoking a matrix exponential.
- Fast non nil potency bail using trace ad determinat of matrix
- Fast finding of degree of nil potency using repeated squaring and binary search using other squared matrices (allocate ceil(log(n)) matrices to find degree of nil potency)
- Maybe nil potency can be calculated faster for matrices using longest non zero diagonal (find degree of nilpotency in n^2 instead of O(n^3*log(n))
- Document superior performance
- Inverstigate solving arbitraty linear ODEs using elementwise expotentiation of (complex) eigenvalues times the polynomials generated by my approach
- Add support for non constant matrixes (maybe i have to look into using non standard interpretation for the sparisity structure, so degree of i use the maximal occouring nil potency) (might be to conservative for pathological use cases)
- Use derivative information of non constant matrixes for larger step sizes (just t or both u and t) -> higher order magnus?
- Understand how step size control is done and whether i need to patch it to get even better performance
- Add support for interpolation since i have access to perfect interpolation if A is constant
- Does this also work for complex/quaternions/....
- Look to better support non-dense, structured matrices
- Something, something sparse
- Look into mass matrix and whether that can be accelerated using this approach
- Investigate sparse matrices where sparsity is in the type, not in the data structure.
- Things to read: https://en.wikipedia.org/wiki/Exponential_integrator , FourierFlows/FourierFlows.jl#31 , https://github.com/navidcy/ETDRK4_notes/blob/master/ETDRK4-timestepping.pdf , https://epubs.siam.org/doi/abs/10.1137/S1064827502410633 , https://en.wikipedia.org/wiki/Krylov_subspace , https://scicomp.stackexchange.com/a/36583 , https://scicomp.stackexchange.com/a/27062 , https://diffeq.sciml.ai/stable/solvers/nonautonomous_linear_ode/#State-Independent-Solvers