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 - 日本語 - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Scilab > Scilab keywords > backslash

backslash

(\) left matrix division.

Calling Sequence

x=A\b

Description

Backslash denotes left matrix division. x=A\b is a solution to A*x=b.

If A is square and non-singular x=A\b (uniquely defined) is equivalent to x=inv(A)*b (but the computations are much cheaper).

If A is not square, x is a least square solution, i.e. norm(A*x-b) is minimal (Euclidean norm). If A is full column rank, the least square solution, x=A\b, is uniquely defined (there is a unique x which minimizes norm(A*x-b)). If A is not full column rank, then the least square solution is not unique, and x=A\b, in general, is not the solution with minimum norm (the minimum norm solution is x=pinv(A)*b).

A.\B is the matrix with (i,j) entry A(i,j)\B(i,j). If A (or B) is a scalar A.\B is equivalent to A*ones(B).\B (or A.\(B*ones(A)).

A\.B is an operator with no predefined meaning. It may be used to define a new operator (see overloading) with the same precedence as * or /.

Examples

A=rand(3,2);b=[1;1;1]; x=A\b; y=pinv(A)*b;  x-y
A=rand(2,3);b=[1;1]; x=A\b; y=pinv(A)*b; x-y, A*x-b, A*y-b

// if rank is deficient
A=rand(3,1)*rand(1,2); b=[1;1;1]; x=A\b; y=pinv(A)*b; A*x-b, A*y-b
A=rand(2,1)*rand(1,3); b=[1;1]; x=A\b; y=pinv(A)*b; A*x-b, A*y-b 

// A benchmark of several linear solvers

[A,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa"); 

b = zeros(size(A,1),1);

tic();
res = umfpack(A,'\',b);
mprintf('\ntime needed to solve the system with umfpack: %.3f\n',toc());

tic();
res = linsolve(A,b);
mprintf('\ntime needed to solve the system with linsolve: %.3f\n',toc());

tic();
res = A\b;
mprintf('\ntime needed to solve the system with the backslash operator: %.3f\n',toc());

See Also

  • slash — (/) right division and feed back
  • inv — matrix inverse
  • pinv — pseudoinverse
  • percent — (%) special character
  • ieee — set floating point exception mode
  • linsolve — linear equation solver
  • umfpack — solve sparse linear system
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:34:33 CEST 2012