mldivide, \

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

Синтаксис

Описание

пример

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

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

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

  • Если A является прямоугольной m-by- 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-by- n матрица и B является m-by- p матрица, затем x является n-by- 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