I am looking for a general package to compute Padé approximants.
In my use case these show up as part of the holomorphic load flow method (see Holomorphic Embedding Load-flow method - Wikipedia). An implementation of HELM already exists at AnalyticalLoadFlow.jl (this is just HELM under a different name), which also includes the Padé approximation as part of its implementation.
I think it would be worthwhile to setup a dedicated package for Padé approximation, as it is a quite general concept that also has clear applications in e.g. control. For my application on HELM I would then use such a package as a dependency.
If others would find this useful, have any ideas about where to host this, or have any ideas regarding implementation, please let me know!
I would be happy to host it at ComplexVariables · GitHub, if you thought that was a good fit.
I found that as well, thanks. That’s a good starting point.
From my initial investigation I found 5 different methods: direct, robust (SVD), Viskovatov, Winn-epsilon and Padé-Weierstrass. The last one seems particularly useful for analyzing voltage collapse in the HELM powerflow.
Also I would like to investigate if we can use a symbolic cache e.g. LinearSolve.jl to amortize the computations for large systems. For HELM specifically we would need to incrementally add coefficients until V(1) has converged (meaning voltage mismatch is small enough).
The algorithm in scipy.pade (or its equivalent in mpmath.pade) is pretty simple and has worked pretty well for me in the past. It’s just a few lines of code and easy to translate into Julia, but it doesn’t have the regularization of the robust SVD approach.