слэш (косая черта) (/) правое деление и обратная связь

## Syntax

                X = A / B        // при этом A = X * B
                X = A ./ B       // при этом A = X .* B
                X = A ./. B      // при этом A = X .*. B
                S = G /. K
                // комментарий в строке
                /* блок многострочных комментариев */

## Описание

Правое деление. `X=A/B` является решением `X*B=A`.

Операторы слэш (правое деление) и обратный слэш (левое деление) связаны следующим выражением: `B/A=(A'\B')'`.

В случае, когда `A` - квадратная матрица, решение `X` может быть вычислено либо через LU-разложение, либо через программу линейного решения по методу наименьших квадратов. Если число обусловленности матрицы `A` меньше, чем `1/(10*%eps)` (то есть, если `A` хорошо обусловлена), то используется LU-разложение с перестановками строк матрицы. Если нет (то есть, если `A` плохо обусловлена), то `X` является решением с минимальной нормой, которое минимизирует `||A*X-B||` используя полное ортогональное разложение `A` (то есть `X` - это решение линейной задачи по методу наименьших квадратов).

`A ./ B` является матрицей с элементами `A(i,j)/ B(i,j)`. Если `B` - скаляр (матрица размером 1 на 1), то эта операция то же самое, что и `A ./ B * ones(A)`. Аналогично, если скаляром является `A`.

Обратный слэш ставят для левого деления.

Обратная связь системы. `S = G /. K` вычисляет `S = G*(eye() + K*G)^(-1)` и этот оператор избегает проблему упрощения.

Заметьте, что `123./B` интерпретируется как `(123)./B`. В таких случаях точка является частью оператора, а не числа.

In the opposite, Заметьте, что `G/.5` интерпретируется как `G/(.5)`. В таких случаях точка интерпретируется как часть числа, а не оператора, while it is not the case in `G/. 5`

Комментарий `//` комментирует строку, т. е. строки, которые начинаются с `//`, игнорируются интерпретатором.

Это то же самое, что `/*`, с которого начинается комментирование блока кода, и `*/`, которым заканчивается комментирование этого блока.

## Примеры

    a = [3.,-24.,30.];
    B = [
       9.   -36.    30.
      -36.   192.  -180.
       30.  -180.   180.
    ];
    x = a / B
    x*B-a // близко к нулю

    a = 4 / 2;        // Должно быть 2
    a = 2 ./ [2,4];   //  [1. 0.5]

Kronecker right division :

    A = [1 100 ; 10 1000], B = [1 2 4],
    P = A .*. B
    P ./. B

    --> A = [1 100 ; 10 1000], B = [1 2 4],
     A  =
       1.    100.
       10.   1000.

     B  =
       1.   2.   4.

    --> P = A .*. B
     P  =
       1.    2.    4.    100.    200.    400.
       10.   20.   40.   1000.   2000.   4000.

    --> P ./. B
     ans  =
       1.   100.
       10.  1000.

    // Комментарии - это хорошо. Они помогают понять код
    a = 1;  // Комментарий после некоторых инструкций в начале строки
    /* Даже длинные, то есть на множестве строк,
    комментарии полезны */

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

- inv
- backslash
- kron ./.
- комментарии
- перегрузка

## История

5.4.1 Пороговый уровень для обусловливания в слэше увеличен.
6.0.0 1./B теперь означает 1 ./ B, больше не интерпретируется как 1. / B