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 строки, затем AB возвращает решение методом наименьших квадратов в систему уравнений A*x= B.

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

Примеры

свернуть все

Решите простую систему линейных уравнений, 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 и eps, Проблемы a MATLAB® почти предупреждение о сингулярности, но доходы с вычислением. При работе с плохо обусловленными матрицами ненадежное решение может закончиться даже при том, что остаточный (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 = lsqminnormA, B или x = pinvA, B .

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

Алгоритмы

свернуть все

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

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

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

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

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

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

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