Rate This Document
Findability
Accuracy
Completeness
Readability

linalg.lstsq

Description

Return the least-squares solution to a linear matrix equation.

The equation may be under-, well-, or over-determined (i.e., the number of linearly independent rows of a can be less than, equal to, or greater than its number of linearly independent columns). If a is square and of full rank, then x (but for round-off error) is the "exact" solution of the equation. Otherwise, x minimizes the Euclidean 2-norm. If there are multiple minimizing solutions, the one with the smallest 2-norm is returned.

Mandatory Input Parameters

Parameter

Type

Description

a

(M, N) array_like

Coefficient matrix

b

{(M,), (M, K)} array_like

Ordinate or dependent variable values. If b is two-dimensional, the least-squares solution is calculated for each of the K columns of b.

Optional Input Parameters

Parameter

Type

Default Value

Description

rcond

float

None

Cut-off ratio for small singular values of a. For the purposes of rank determination, singular values are treated as zero if they are smaller than rcond times the largest singular value of a.

Return Value

Parameter

Type

Description

x

{(N,),(N,K)} ndarray

Least-squares solution. If b is two-dimensional, the solutions are in the K columns of x.

residuals

{(1,), (K,), (0,)} ndarray

Sums of squared residuals: Squared Euclidean 2-norm for each column in b - a @ x. If the rank of a is < N or M ≤ N, this is an empty array. If b is 1-dimensional, this is a (1,) shape array. Otherwise, the shape is (K,).

rank

int

Rank of matrix a

s

(min(M, N),) ndarray

Singular value of a

Examples

>>> import numpy as np
>>> # y = mx + c
>>> x = np.array([0,1,2,3])
>>> y = np.array([-1,0.2,0.9,2.1])
>>> 
>>> # Write the line equation as y = Ap, where A = [[x 1]] and p = [[m], [c]].
>>> A = np.vstack([x, np.ones(len(x))]).T
>>> A
array([[0., 1.],
       [1., 1.],
       [2., 1.],
       [3., 1.]])
>>> 
>>> m, c = np.linalg.lstsq(A, y, rcond=None)[0]
>>> m, c
(1.0000000000000002, -0.9499999999999996)
>>>