# обратный слэш (\)

(\) левое матричное деление.

## Последовательность вызова

    x=A\b

## Описание

Обратный слэш означает левое матричное деление. `x=A\b` является решением для `A*x=b`.

Если `A` -- квадратная и невырожденная, то `x=A\b` (уникально определённая) эквивалентно `x=inv(A)*b` (но вычисления гораздо дешевле).

Если `A` не квадратная, то `x` является решением наименьших квадратов, т.е. `norm(A*x-b)` является минимальной (эвклидовой нормой). Если ранг матрицы `A` полный, то решение наименьших квадратов, `x=A\b`, является уникально определённым (есть уникальное `x`, которое минимизирует `norm(A*x-b)`). Если ранг матрицы `A` неполный, то решение наименьших квадратов не является уникальным, и `x=A\b`, в общем, не является решением с минимальной нормой (решение минимальной нормы равно `x=pinv(A)*b`).

`A.\B` является матрицей с `(i,j)`-тым элементом, равным `A(i,j)\B(i,j)`. Если `A` (или `B`) является скаляром, то `A.\B` эквивалентно `A*ones(B).\B` (или `A.\(B*ones(A))`.

`A\.B` является оператором без предопределённого значения. Он может использоваться для определения нового оператора (см. overloading) с тем же самым приоритетом что и `*` или `/`.

## Примеры

    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

    // если ранг неполный
    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,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa");

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

    tic();
    res = umfpack(A,'\',b);
    mprintf('\nвремя, необходимое для решения системы с помощью umfpack: %.3f\n',toc());

    tic();
    res = linsolve(A,b);
    mprintf('\nвремя, необходимое для решения системы с помощью linsolve: %.3f\n',toc());

    tic();
    res = A\b;
    mprintf('\nвремя, необходимое для решения системы с помощью оператора ""обратный слэш"": %.3f\n',toc());

## Смотрите также

- слэш
- inv
- pinv
- процент
- ieee
- linsolve
- umfpack