tensorly
.solve
- solve(a, b)
Solve a linear matrix equation, or system of linear scalar equations.
Computes the “exact” solution, x, of the well-determined, i.e., full rank, linear matrix equation ax = b.
- Parameters:
- a(…, M, M) array_like
Coefficient matrix.
- b{(M,), (…, M, K)}, array_like
Ordinate or “dependent variable” values.
- Returns:
- x{(…, M,), (…, M, K)} ndarray
Solution to the system a x = b. Returned shape is (…, M) if b is shape (M,) and (…, M, K) if b is (…, M, K), where the “…” part is broadcasted between a and b.
- Raises:
- LinAlgError
If a is singular or not square.
See also
scipy.linalg.solve
Similar function in SciPy.
Notes
Added in version 1.8.0.
Broadcasting rules apply, see the numpy.linalg documentation for details.
The solutions are computed using LAPACK routine
_gesv
.a must be square and of full-rank, i.e., all rows (or, equivalently, columns) must be linearly independent; if either is not true, use lstsq for the least-squares best “solution” of the system/equation.
Changed in version 2.0: The b array is only treated as a shape (M,) column vector if it is exactly 1-dimensional. In all other instances it is treated as a stack of (M, K) matrices. Previously b would be treated as a stack of (M,) vectors if b.ndim was equal to a.ndim - 1.
References
[1]G. Strang, Linear Algebra and Its Applications, 2nd Ed., Orlando, FL, Academic Press, Inc., 1980, pg. 22.
Examples
Solve the system of equations:
x0 + 2 * x1 = 1
and3 * x0 + 5 * x1 = 2
:>>> a = np.array([[1, 2], [3, 5]]) >>> b = np.array([1, 2]) >>> x = np.linalg.solve(a, b) >>> x array([-1., 1.])
Check that the solution is correct:
>>> np.allclose(np.dot(a, x), b) True