слэш (косая черта)
(/) правое деление и обратная связь
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 — matrix inverse
- backslash — (\) левое матричное деление: точное решение или решение по методу наименьших квадратов
- kron ./. — Kronecker left and right divisions
- комментарии — (// или /*...*/) комментирование
- перегрузка — возможности перегрузки отображения, функций и операторов
История
Версия | Описание |
5.4.1 | Пороговый уровень для обусловливания в слэше увеличен. |
6.0.0 | 1./B теперь означает 1 ./ B, больше не интерпретируется как 1. / B |
Report an issue | ||
<< точка с запятой | Ключевые слова Scilab | звёздочка >> |