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


backslash

(\) division matricielle à gauche : solution exacte ou selon moindres carrés

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
  • lsq — linear least square solution of A*X=B with minimal norm(X)
  • inv — inverse d'une matrice
  • pinv — pseudo-inverse
  • linsolve — solveur d'équation linéaire
  • umfpack — solve sparse linear system
  • datafit — Non linear (constrained) parametric fit of measured (weighted) data
  • 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:
Thu Oct 24 11:15:55 CEST 2024