Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
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
Version | Description |
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 [,;] >> |