Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: Français - Português - 日本語 - Русский
Scilab Help >> Linear Algebra > Linear Equations > lsq

lsq

linear least square solution of A*X=B with minimal norm(X)

Syntax

X = lsq(A, B)
X = lsq(A, B, tol)

Arguments

A

Real or complex (m x n) matrix

B

real or complex (m x p) matrix

tol

positive scalar, used to determine the effective rank of A (defined as the order of the largest leading triangular submatrix R11 in the QR factorization with pivoting of A, whose estimated condition number <= 1/tol). The tol default value is set to sqrt(%eps).

X

real or complex (n x p) matrix

Description

X=lsq(A,B) computes the minimum norm least square solution of the equation A*X=B, while X=A \ B compute a least square solution with at most rank(A) nonzero components per column.

References

lsq function is based on the LApack functions DGELSY for real matrices and ZGELSY for complex matrices.

Examples

//Build the data
x=(1:10)';

y1=3*x+4.5+3*rand(x,'normal');
y2=1.8*x+0.5+2*rand(x,'normal');
plot2d(x,[y1,y2],[-2,-3])
//Find the linear regression
A=[x,ones(x)];B=[y1,y2];
X=lsq(A,B);

y1e=X(1,1)*x+X(2,1);
y2e=X(1,2)*x+X(2,2);
plot2d(x,[y1e,y2e],[2,3])

//Difference between lsq(A,b) and A\b
A=rand(4,2)*rand(2,3);//a rank 2 matrix
b=rand(4,1);
X1=lsq(A,b)
X2=A\b
[A*X1-b, A*X2-b] //the residuals are the same

See also

  • backslash — (\) left matrix division: Exact or least square solution
  • inv — matrix inverse
  • pinv — pseudoinverse
  • rank — rank
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Jan 03 14:23:23 CET 2022