# equations library Null safety

## Classes

Algebraic
Abstract class representing an algebraic equation, also know as polynomial equation, which has a single variable with a maximum degree.
AlgebraicDivision
This utility class holds the quotient and the remainder of a division between two polynomials. When you use `operator/` on two Algebraic objects, this class is returned. For example:
Bisection
Implements the 'bisection' method to find the roots of a given equation.
Brent
Implements Brent's method to find the roots of a given equation.
CholeskySolver
Implementation of the "Cholesky decomposition" algorithm for solving a system of linear equations. It only works with Hermitian, positive-definite matrices.
Chords
Implements the 'chords' method to find the roots of a given equation.
Complex
A Dart representation of a complex number in the form `a + bi` where `a` is the real part and `bi` is the imaginary (or complex) part.
ComplexMatrix
A simple Dart implementation of an `m x n` matrix whose data type is double.
Constant
Concrete implementation of Algebraic which represents a constant value `a`. It can be real or complex.
Cubic
Concrete implementation of Algebraic that represents a third degree polynomial equation in the form `ax^3 + bx^2 + cx + d = 0`.
DurandKerner
The Durand–Kerner method, also known as Weierstrass method, is a root finding algorithm for solving polynomial equations. With this class, you can find all the roots of a polynomial of any degree.
ExpressionParser
Parses mathematical expressions with real numbers and the `x` variable (if any). The only allowed variable name is `x`: any other type of value isn't recognized. Some expressions examples are:
Fraction
Dart representation of a fraction having both the numerator and the denominator as integers.
GaussianElimination
Implementation of the "Gaussian elimination" algorithm, also known as "row reduction", for solving a system of linear equations.
GaussSeidelSolver
Solves a system of linear equations using the Gauss-Seidel iterative method. The given input matrix, representing the system of linear equations, must be square.
IntegralResults
Holds a series of results returned by NumericalIntegration.integrate:
Interpolation
Abstract class representing an interpolation strategy that finds new data points based on a given discrete set of data points, called nodes. The algorithms implemented by this package are:
InterpolationNode
A point in the cartesian coordinate system used by Interpolation types to represent interpolation nodes. This class simply represents the `x` and `y` coordinates of a point on a cartesian plane.
JacobiSolver
Solves a system of linear equations using the Jacobi iterative method. The given input matrix, representing the system of linear equations, must be square.
Linear
Concrete implementation of Algebraic that represents a first degree polynomial equation in the form ax + b = 0.
LinearInterpolation
Linear interpolation is a curve fitting method that uses linear polynomials to construct new data points within the range of a discrete set of known data points.
LUSolver
Solves a system of linear equations using the 'LU decomposition' method. The given input matrix, representing the system of linear equations, must be square.
Matrix<T>
A simple Dart implementation of a matrix whose size is `m x n`. Thanks to its generic nature, you can decide to work with int, double, Complex or any other kind of numerical type.
MidpointRule
The "midpoint rule" is a technique for approximating the value of a definite integral.
MixedFraction
Dart representation of a 'mixed fraction', which is made up by the whole part and a proper fraction. A proper fraction is a fraction in which the relation `numerator <= denominator` is true.
Newton
Implements Newton's method to find the roots of a given equation.
NewtonInterpolation
Newton interpolation is an interpolation polynomial for a given set of data points. It can be expressed using forward or backward divided differences.
NonLinear
Abstract class representing a nonlinear equation which can be solved with a particular root-finding algorithm. No complex numbers are allowed.
NonlinearResults
Holds a series of results returned by NonLinear.solve:
NumericalIntegration
When it comes to analysis, the term numerical integration indicates a group of algorithms for calculating the numerical value of a definite integral on an interval.
PolarComplex
The wrapper returned by a Complex that represents the number in polar coordinates.
PolynomialInterpolation
Polynomial interpolation is the interpolation of a given data set by the polynomial of lowest possible degree that passes through the points of the dataset.
PolynomialLongDivision
The "Polynomial long division" is an algorithm that divides a polynomial by another polynomial of the same or lower degree.
Concrete implementation of Algebraic that represents a second degree polynomial equation in the form ax^2 + bx + c = 0.
Quartic
Concrete implementation of Algebraic that represents a fourth degree polynomial equation in the form ax^4 + bx^3 + cx^2 + dx + e = 0.
Rational
Dart representation of a rational number.
RealMatrix
A simple Dart implementation of an `m x n` matrix whose data type is double.
RegulaFalsi
Implements the regula falsi method (also known as "false position method") to find the roots of a given equation.
Riddler
Implements the Riddler's method to find the roots of a given equation.
Secant
Implements the secant method to find the roots of a given equation.
SimpsonRule
The "Simpson rule" is a technique for approximating the value of a definite integral.
SORSolver
Solves a system of linear equations using the SOR iterative method. The given input matrix, representing the system of linear equations, must be square.
SplineInterpolation
Performs spline interpolation given a set of control points. The algorithm can compute a "monotone cubic spline" or a "linear spline" based on the properties of the control points.
Steffensen
Implements Seffensen's method to find the roots of a given equation.
SylvesterMatrix
A Sylvester matrix is used to compute the discriminant of a polynomial starting from its coefficients.
SystemSolver
A solver for systems of linear equations whose coefficients are only real numbers. There must be `n` equations in `n` unknowns.
TrapezoidalRule
The "trapezoidal rule" is a technique for approximating the value of a definite integral.

## Extensions

ExpressionParserX
Extension method for ExpressionParser on String types.
FractionNum
Extension method that adds Fraction functionalities to num.
FractionString
Extension method that adds Fraction functionalities to String.
MixedFractionNum
Extension method that adds MixedFraction functionalities to num.
MixedFractionString
Extension method that adds MixedFraction functionalities to String.

## Exceptions / Errors

AlgebraicException
Exception object thrown by Algebraic.
ComplexException
Exception object thrown by Complex.
EquationException
Base class for exception objects in this package.
ExpressionParserException
Exception object thrown by ExpressionParser.
FractionException
Exception thrown by a Fraction object.
InterpolationException
Exception object thrown by Interpolation.
MatrixException
Exception object thrown by Matrix.
MixedFractionException
Exception thrown by a MixedFraction object.
NonlinearException
Exception object thrown by NonLinear.
PolynomialLongDivisionException
Exception object thrown by PolynomialLongDivision.
SystemSolverException
Exception object thrown by SystemSolver.