exponenta event banner

mldivide,\

Системы решений линейных уравнений Ax = B для x

Синтаксис

Описание

пример

x = A\B решает систему линейных уравнений A*x = B. Матрицы A и B должно иметь одинаковое количество строк. MATLAB ® отображает предупреждающее сообщение, еслиA плохо масштабирован или почти единичен, но выполняет вычисление независимо.

  • Если A является скаляром, то A\B эквивалентно A.\B.

  • Если A является квадратом nоколо-n матрица и B является матрицей с n строки, затем x = A\B является решением уравнения A*x = B, если он существует.

  • Если A прямоугольник mоколо-n матрица с m ~= n, и B является матрицей с m строки, затем A\B возвращает решение методом наименьших квадратов в систему уравнений A*x= B.

x = mldivide(A,B) является альтернативным способом выполнения x = A\B, но используется редко. Он обеспечивает перегрузку оператора для классов.

Примеры

свернуть все

Решите простую систему линейных уравнений, A*x = B.

A = magic(3);
B = [15; 15; 15];
x = A\B
x = 3×1

    1.0000
    1.0000
    1.0000

Решение линейной системы уравнений A*x = b с использованием сингулярной матрицы, A.

A = magic(4);
b = [34; 34; 34; 34];
x = A\b
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =  1.306145e-17.
x = 4×1

    1.5000
    2.5000
   -0.5000
    0.5000

Когда rcond находится между 0 и epsMATLAB ® выдает почти единичное предупреждение, но продолжает расчет. При работе с плохо кондиционированными матрицами может возникнуть ненадежное решение, даже если остаток(b-A*x) относительно невелик. В данном конкретном примере норма остатка равна нулю, и получается точное решение, хотя rcond мал.

Когда rcond равно 0, появляется сингулярное предупреждение.

A = [1 0; 0 0];
b = [1; 1];
x = A\b
Warning: Matrix is singular to working precision.
x = 2×1

     1
   Inf

В этом случае деление на ноль приводит к вычислениям с Inf и/или NaN, делая вычисленный результат ненадежным.

Решите систему линейных уравнений, A*x = b.

A = [1 2 0; 0 4 3];
b = [8; 18];
x = A\b
x = 3×1

         0
    4.0000
    0.6667

Решите простую систему линейных уравнений с помощью разреженных матриц.

Рассмотрим уравнение матрицы A*x = B.

A = sparse([0 2 0 1 0; 4 -1 -1 0 0; 0 0 0 3 -6; -2 0 0 0 2; 0 0 4 2 0]);
B = sparse([8; -1; -18; 8; 20]);
x = A\B
x = 
   (1,1)       1.0000
   (2,1)       2.0000
   (3,1)       3.0000
   (4,1)       4.0000
   (5,1)       5.0000

Входные аргументы

свернуть все

Операнды, указанные как векторы, полные матрицы или разреженные матрицы. A и B должно иметь одинаковое количество строк.

  • Если A или B имеет целочисленный тип данных, другой вход должен быть скалярным. Операнды с целочисленным типом данных не могут быть сложными.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Поддержка комплексного номера: Да

Выходные аргументы

свернуть все

Решение, возвращаемое в виде вектора, полной матрицы или разреженной матрицы. Если A является mоколо-n матрица и B является mоколо-p матрица, затем x является nоколо-p матрица, включая случай, когда p==1.

Если A имеет полное хранилище, x также заполнен. Если A разрежен, то x имеет то же хранилище, что и B.

Совет

  • Операторы / и \ связаны между собой уравнением B/A = (A'\B')'.

  • Если A является квадратной матрицей, то A\B примерно равно inv(A)*B, но процессы MATLAB A\B по-другому и более надежно.

  • Если ранг A меньше числа столбцов в A, то x = A\B не обязательно является решением по минимальной норме. Минимально нормальное решение для наименьших квадратов можно вычислить с помощью x = lsqminnorm(A,B) или x = pinv(A)*B.

  • Использовать decomposition объекты для эффективного решения линейной системы многократно с различными правыми сторонами. decomposition объекты хорошо подходят для решения задач, требующих повторных решений, так как разложение матрицы коэффициентов не нужно выполнять многократно.

Алгоритмы

свернуть все

Универсальность mldivide в решении линейных систем проистекает из его способности использовать преимущества симметрии в задаче, отправляя на соответствующий решатель. Этот подход направлен на минимизацию времени вычислений. Первое различие, которое делает функция, состоит между полными (также называемыми «плотными») и разреженными входными массивами.

Алгоритм для полных входов

На приведенной ниже блок-схеме показан путь алгоритма при вводе A и B заполнены.

Алгоритм разреженных входов

Если A заполнен и B разрежен, то mldivide новообращенные B к полной матрице и использует полный путь алгоритма (выше) для вычисления решения с полным хранением. Если A разреженный, хранение раствора x является таким же, как у B и mldivide следует пути алгоритма для разреженных входов, показанного ниже.

Расширенные возможности

..
Представлен до R2006a