+++ title = "Linear Solvers" +++
This section will be split into two categories; Numerical linear solvers, and symbolic linear solvers.
A linear problem is of the form A\b
in base Julia, which is good enough in many cases. If you need more control over the solver algorithm, there are dedicated packages that provide such functionality.
The most complete one is LinearSolve.jl, which is part of the SciML ecosystem. It takes the role of a meta-package, and build on top of other packages that implement the actual algorithms. The benefit is that you can define the problem once, and then solve it with a number of different solvers by changing a keyword argument.
Specific solvers providing their own API's include Paradiso.jl, MKL.jl, BandedMatrices.jl, and more.
See https://discourse.julialang.org/t/solving-sparse-linear-systems-fast/83071/9 for a relevant discussion on the options for solving numerical linear equations.
You can use Symbolics.jl to solve a single or multiple equations in one or more variables. See the documentation for solve_for
for more detail.
You can also use SymPy.jl