Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

mldivide, \

Resolver sistemas de ecuaciones lineales Ax = B para x

Descripción

ejemplo

x = A\B resuelve el sistema de ecuaciones lineales A*x = B. Las matrices A y B deben tener el mismo número de filas. MATLAB ® muestra un mensaje de ADVERTENCIA Si A está mal escalado o casi singular, pero realiza el cálculo independientemente.

  • Si A es un escalar, A\B equivale a A.\B.

  • Si A es una matriz cuadrada de n-por-n y B es una matriz de n filas, entonces x = A\B es una solución a la ecuación A*x = B, si existe.

  • Si A es una matriz rectangular de m-por-n con m ~= n, y B es una matriz con m filas, entonces, A\B devuelve una solución de mínimos cuadrados al sistema de ecuaciones A*x=B.

x = mldivide(A,B) es una forma alternativa de ejecutar x = A\B, pero rara vez se utiliza. Permite la sobrecarga del operador para las clases.

Ejemplos

contraer todo

Resuelve un simple sistema de ecuaciones lineales, A*x = B.

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

    1.0000
    1.0000
    1.0000

Resolver un sistema lineal de ecuaciones A*x = b que implica una matriz singular, 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

Cuando rcond se encuentra entre 0 y eps, Matlab ® emite una advertencia casi singular, pero procede con el cálculo. Cuando se trabaja con matrices mal acondicionadas, una solución poco fiable puede resultar aunque el (b-A*x) residual sea relativamente pequeño. En este ejemplo particular, la norma del residuo es cero, y se obtiene una solución exacta, aunque rcond es pequeño.

Cuando rcond es igual a 0, aparece la advertencia singular.

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

     1
   Inf

En este caso, la división por cero conduce a cálculos con Inf y/o NaN, lo que hace que el resultado calculado no sea fiable.

Resuelve un sistema de ecuaciones lineales, A*x = b.

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

         0
    4.0000
    0.6667

Resuelve un simple sistema de ecuaciones lineales usando matrices escasas.

Considere la ecuación de matriz 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

Argumentos de entrada

contraer todo

Matriz de coeficiente, especificada como vector, matriz completa o matriz dispersa. Si A tiene filas m , B debe tener m filas.

Tipos de datos: single | double
Soporte de números complejos:

Lado derecho, especificado como vector, matriz completa o matriz dispersa. Si B tiene filas m , A debe tener m filas.

Tipos de datos: single | double
Soporte de números complejos:

Argumentos de salida

contraer todo

Solución, devuelto como vector, matriz completa o matriz dispersa. Si A es una matriz m-por-n y B es una matriz m-por-p, entonces x es una matriz de n-by-p , incluido el caso cuando p==1.

Si A tiene almacenamiento completo, x también está lleno. Si A es dispersa, x tiene el mismo almacenamiento que B.

Sugerencias

  • Los operadores / y \ están relacionados entre sí por la ecuación B/A = (A'\B')'.

  • Si A es una matriz cuadrada, entonces, A\B es aproximadamente igual a inv(A)*B, pero MATLAB procesa A\B de de forma diferente y más robusta.

  • Si el rango de A es menor que el número de columnas de A, x = A\B no es necesariamente la solución de norma mínima. Puede calcular la solución mínima de cuadrados mínimos de norma utilizando x = lsqminnorm(A,B) o x = pinv(A)*B.

Algoritmos

contraer todo

La versatilidad de mldivide en la solución de los sistemas lineales proviene de su capacidad de aprovechar las simetrías en el problema mediante el envío a un solucionador adecuado. Este enfoque pretende minimizar el tiempo de cómputo. La primera distinción que hace la función es entre Full (también llamado "Dense") y las matrices de entrada de dispersos.

Algoritmo para entradas completas

El diagrama de flujo siguiente muestra la ruta del algoritmo cuando las entradas A y B son Full.

Algoritmo para las entradas escasas

Si A está lleno y B es escaso, mldivide convierte B en una matriz completa y utiliza la ruta de algoritmo completa (arriba) para calcular una solución con almacenamiento completo. Si A es escaso, el almacenamiento de la solución x es el mismo que el de B y mldivide sigue la ruta del algoritmo para Sparse entradas , que se muestran a continuación.

Capacidades ampliadas

Introducido antes de R2006a