4.2: Ecuaciones Lineales
- Page ID
- 125229
\( \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}}} \)
En física, a menudo se nos llama a resolver ecuaciones lineales de la forma
\[\mathbf{A} \vec{x} = \vec{b},\]
donde\(\mathbf{A}\) hay alguna\(N\times N\) matriz, y ambas\(\vec{x}\) y\(\vec{b}\) son vectores de longitud\(N\). Dado\(\mathbf{A}\) y\(\vec{b}\), el objetivo es resolver para\(\vec{x}\).
Es una habilidad importante y útil reconocer sistemas lineales de ecuaciones cuando surgen en problemas de física. Tales ecuaciones pueden surgir en muchos contextos diversos; a continuación daremos un par de ejemplos simples.
Ejemplo\(\PageIndex{1}\)
Supongamos que hay un conjunto de partículas puntuales cargadas\(N\) eléctricamente en las posiciones\(\{\vec{R}_0, \vec{R}_1, \dots, \vec{R}_{N-1}\}\). Desconocemos el valor de las cargas eléctricas, pero somos capaces de medir el potencial eléctrico en cualquier momento\(\vec{r}\). El potencial eléctrico viene dado por
\[\phi(\vec{r}) = \sum_{j=0}^{N-1} \frac{q_j}{|\vec{r}-\vec{R}_j|}.\]
Si medimos el potencial en\(N\) las posiciones\(\{\vec{r}_0, \vec{r}_1, \dots, \vec{r}_{N-1}\}\), ¿cómo se\(\{q_0,\dots,q_{N-1}\}\) pueden deducir los cargos?
Solución
Para ello, escribamos la ecuación para el potencial eléctrico en el punto\(\vec{r}_i\) como:
\[\phi(\vec{r}_i) = \sum_{j=0}^{N-1} \left[\frac{1}{|\vec{r}_i-\vec{R}_j|}\right] \, q_j.\]
Esto tiene la forma\(\mathbf{A} \vec{x} = \vec{b}\), dónde\(\mathbf{A}_{ij} \equiv \frac{1}{|\vec{r}_i-\vec{R}_j|}\),\(\vec{b}_i \equiv \phi(\vec{r}_i)\), y las incógnitas son\(\vec{x}_j = q_j\).
Ejemplo\(\PageIndex{2}\)
Los sistemas lineales de ecuaciones aparecen comúnmente en la teoría de circuitos. Por ejemplo, considere el siguiente circuito paralelo de fuentes de\(N\) alimentación y resistencias:
Supongamos que el voltaje en el lado derecho del circuito es\(V_{0}=0\). Dadas las resistencias\(\{R_0, \dots, R_{N-1}\}\) y los EMF\(\{\mathcal{E}_0, \dots, \mathcal{E}_{N-1}\}\), ¿cómo encontramos el voltaje de la izquierda\(V\) y las corrientes\(\{\mathcal{I}_0, \dots, \mathcal{I}_{N-1}\}\)?
Solución
Seguimos las leyes habituales de la teoría de circuitos. Cada rama del circuito paralelo obedece a la ley de Ohm,
\[\mathcal{I}_j R_j + V = \mathcal{E}_j.\]
Además, las corrientes obedecen a la ley de Kirchoff (conservación de la corriente), por lo que
\[\sum_{j=0}^{N-1} \mathcal{I}_j = 0.\]
Podemos combinar estas\(N+1\) ecuaciones en una ecuación matricial de la forma\(\mathcal{A}\,\vec{x} = \vec{b}\)
\[\begin{bmatrix}R_0 & 0 & \cdots & 0 & 1 \\ 0 & R_1 & \cdots & 0 & 1 \\ \vdots & \vdots &\ddots & \vdots & \vdots \\ 0& 0& \cdots & R_{N-1} & 1 \\ 1& 1& \cdots & 1& 0\end{bmatrix} \begin{bmatrix}\mathcal{I}_0 \\ \mathcal{I}_1 \\ \vdots \\ \mathcal{I}_{N-1} \\ V\end{bmatrix} = \begin{bmatrix}\mathcal{E}_0 \\ \mathcal{E}_1 \\ \vdots \\ \mathcal{E}_{N-1} \\ 0\end{bmatrix}\]
Aquí, el vector desconocido\(\vec{x}\) consiste en las\(N\) corrientes que pasan por las ramas del circuito, y el potencial\(V\).
4.2.1 Solución Directa
Ante un sistema de ecuaciones lineales, el primer instinto de uno suele ser resolver\(\vec{x}\) invirtiendo la matriz\(\mathbf{A}\):
\[\mathbf{A} \vec{x} = \vec{b} \quad\Rightarrow\quad \vec{x} = \mathbf{A}^{-1}\, \vec{b}.\]
No hagas esto. Es matemáticamente correcto, pero numéricamente ineficiente. Como veremos, calcular la matriz inversa\(\mathbf{A}^{-1}\), y luego multiplicar a la derecha por\(\vec{b}\), implica más pasos que simplemente resolver la ecuación directamente
Para resolver un sistema de ecuaciones lineales, utilice la función solve
del módulo scipy.linalg
. (Deberá importar scipy.linalg
explícitamente, porque es un submódulo de scipy y
no se importa por nuestra declaración habitual de scipy import *
.) Aquí hay un ejemplo:
>>> A = array([[1., 2., 3.], [2., 4., 0.], [1., 3., 9.]]) >>> b = array([6., 6., 9.]) >>> >>> import scipy.linalg as lin >>> x = lin.solve(A, b) >>> x array([ 9., -3., 1.])
Podemos verificar que esta es efectivamente la solución:
>>> dot(A, x) # This should equal b. array([ 6., 6., 9.])
El solucionador directo utiliza un algoritmo conocido como eliminación gaussiana, del que discutiremos en el próximo artículo. El tiempo de ejecución de la eliminación gaussiana es\(O(N^{3})\), donde\(N\) está el tamaño del problema del álgebra lineal.
¡La razón por la que evitamos resolver ecuaciones lineales invirtiendo la matriz\(\mathbf{A}\) es que la matriz inversa se calcula en sí misma usando el algoritmo de eliminación gaussiana! Si vas a usar la eliminación gaussiana de todos modos, es mucho mejor aplicar el algoritmo directamente sobre el deseado\(\mathbf{A}\) y\(b\). Resolver calculando\(\mathbf{A}^{-1}\) implica aproximadamente el doble de pasos computacionales.