18.3: Solución de Sistemas Lineales - MATLAB Backslash
- Page ID
- 87813
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
Consideramos ahora un sistema de ecuaciones\(n\) lineales en\(n\) incógnitas:\(A x=b\). Presumimos que la matriz\(A\) es no singular de tal manera que efectivamente hay una solución, y de hecho una solución única, a este sistema de ecuaciones. Sabemos que podemos escribir esta solución si lo deseamos como\(x=A^{-1} b\). Hay dos formas en las que encontramos\(x\) en MATLAB. En realidad, más de dos maneras: restringimos la atención a las más obvias (y a las peores) y luego a las mejores.
Como nuestra primera opción podemos simplemente escribir\(x=\operatorname{inv}(A) * b\). Sin embargo, a excepción de los sistemas pequeños, esto será innecesariamente costoso. Este enfoque “inverso” es en particular muy derrochador en el caso en el que la matriz\(A\) es bastante escasa -con muchos ceros- situación que surge muy (muy) a menudo en el contexto de la ingeniería mecánica y el modelado físico de manera más general. Se discute la causa raíz de esta ineficiencia en Unidad\(V\).
Como nuestra segunda opción podemos invocar el operador “backslash” de MATLAB\(\backslash\) (correspondiente a la función mldivide) de la siguiente manera:\(\mathrm{x}=\mathrm{A} \backslash \mathrm{b}\). Este operador de diagonal inversa es esencialmente una colección de opciones de solución relacionadas (directas) entre las que MATLAB elegirá la más adecuada en función de la forma de\(A\); todas estas opciones están relacionadas con la descomposición “LU” de la matriz\(A\) (seguida de adelante y atrás sustitución), como discutiremos con mayor detalle en la Unidad V. Nótese que estos enfoques de LU no forman la inversa de\(A\) sino que atacan directamente el problema de solución del sistema lineal. El operador de backslash de MATLAB es muy eficiente no solo por el algoritmo elegido sino también por la implementación cuidadosa y altamente optimizada.