- Справка Scilab
- Scilab
- Ключевые слова Scilab
- процент
- обратный слэш (\)
- brackets [,;]
- двоеточие (:)
- запятая
- комментарии
- сравнение
- доллар
- точка
- знак равенства
- выделение
- getscilabkeywords
- крышечка
- вставка
- меньше
- минус
- НЕ
- круглые скобки
- плюс
- кавычка
- точка с запятой
- слэш (косая черта)
- звёздочка
- символы
- тильда
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
обратный слэш (\)
(\) левое матричное деление.
Синтаксис
X=A\B
Описание
Обратный слэш означает левое матричное деление.
X=A\B
является решением для A*X=B
.
Если A
- квадратная и невырожденная, то X=A\B
(уникально определённая) эквивалентно X=inv(A)*B
в точном арифметическом смысле, однако вычисления гораздо точнее и дешевле в арифметике с плавающей запятой.
Следовательно, чтобы вычислить решение линейной системы уравнений A*X=B
,
следует использовать оператор "обратный слэш", а функцию inv
не следует использовать.
В случае, когда A
- квадратная матрица,
решение X
может быть вычислено
либо через LU-разложение, либо через программу линейного
решения по методу наименьших квадратов.
Если число обусловленности матрицы A
меньше, чем 1/(10*%eps)
(то есть, если
A
хорошо обусловлена),
то используется LU-разложение с перестановками строк матрицы.
Если нет (то есть, если A
плохо
обусловлена), то X
является решением с
минимальной нормой, которое минимизирует
||A*X-B||
используя полное ортогональное
разложение A
(то есть
X
- это решение линейной задачи по методу
наименьших квадратов).
Если 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
является оператором без предопределённого значения. Он может использоваться
для определения нового оператора (см. перегрузку) с тем же самым приоритетом что и *
или /
.
Примеры
A=[ 9. -36. 30. -36. 192. -180. 30. -180. 180. ]; b=[ 3. -24. 30. ]; x=A\b A*x-b // close to zero 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/demos/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());
Смотрите также
History
Version | Description |
5.4.1 | Пороговый уровень для обусловливания в обратном слэше увеличен. |
Report an issue | ||
<< процент | Ключевые слова Scilab | brackets [,;] >> |