Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
6.1.0 - Français

Change language to:
English - 日本語 - Português - Русский

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

Aide de Scilab >> Scilab > Mots clés Scilab > backslash

backslash

(\) division matricielle à gauche

Séquence d'appel

X = A \ B

Description

L'anti-slash représente la division matricielle à gauche. x=A\b est une solution de A*x=b.

Si A est carrée et régulière x=A\b (unique) est équivalent mathématiquement à x=inv(A)*b (dont le calcul est par contre beaucoup plus coûteux).

Si A n'est pas carrée, x est une solution au sens des moindres carrés, c'est à dire que norm(A*x-b) est minimale (norme euclidienne). Si A est de rang maximal (colonnes linéairement indépendantes), la solution au sens des moindres carrés, x=A\b, est unique (le vecteur x minimisant norm(A*x-b) est unique). Si A n'est pas de rang maximal, cette solution n'est pas unique, et x=A\b, en général, n'est pas la solution de norme minimale (la solution de norme minimale est x=pinv(A)*b).

A.\B est la matrice dont le terme (i,j) est égal à A(i,j)\B(i,j). Si A (ou B) est un scalaire A.\B est équivalent à A*ones(B).\B (or A.\(B*ones(A)).

A\.B est un opérateur dont la signification n'est pas prédéfinie. il peut être utilisé pour définir de nouveaux opérateurs (voir overloading) avec la même priorité que * ou /.

Exemples

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

// Rang non maximal
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
// Une comparaison de différents solveurs linéaire creux

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

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

tic();
res = umfpack(A,'\',b);
mprintf('\ntemps nécessaire à la résolution du système avec umfpack: %.3f\n',toc());

tic();
res = linsolve(A,b);
mprintf('\ntemps nécessaire à la résolution du système avec linsolve: %.3f\n',toc());

tic();
res = A\b;
mprintf('\ntemps nécessaire à la résolution du système avec l''opérateur backslash: %.3f\n',toc());

Voir aussi

  • slash — division à droite et feedback
  • inv — inverse d'une matrice
  • pinv — pseudo-inverse
  • linsolve — solveur d'équation linéaire
  • umfpack — solve sparse linear system
  • kron .\. — Kronecker left and right divisions
  • overloading — display, functions and operators overloading capabilities

Historique

VersionDescription
5.5.0 The threshold level which switches between Gaussian Elimination with row pivoting and linear least squares when computing A\B is decreased from sqrt(eps) to eps.
Report an issue
<< percent (%) Mots clés Scilab brackets [,;] >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 25 08:50:15 CET 2020