18.2: Algoritmo para calcular el determinante
- Page ID
- 114948
Considera el siguiente algoritmo recursivo (algoritmo que se llama a sí mismo) para determinar el determinado de una\(n \times n\) matriz\(A\) (denotada\(\left| A \right|\)), que es la suma de los productos de los elementos de cualquier fila o columna. i.e.:
\[i\text{th row expansion: } |A| = a_{i1}C_{i1} + a_{i2}C_{i2} + \ldots + a_{in}C_{in} \nonumber \]
\[j\text{th column expansion: } |A| = a_{1j}C_{1j} + a_{2j}C_{2j} + \ldots + a_{nj}C_{nj} \nonumber \]
donde\(C_{ij}\) es el cofactor de\(a_{ij}\) y viene dado por:
\[ C_{ij} = (-1)^{i+j}|M_{ij}| \nonumber \]
y\(M_{ij}\) es la matriz que queda después de eliminar fila\(i\) y columna\(j\) de\(A\).
Aquí hay algún código que intenta implementar este algoritmo.
El siguiente código genera una\(n \times n\) matriz con valores aleatorios de 0 a 10.
Ejecute el código varias veces para obtener diferentes matrices:
Utilice la matriz generada aleatoriamente (\(A\)) para probar la función mydet
anterior y comparar su resultado con la función numpy.linalg.det
.
¿Las respuestas a mydet
y numpuy.linalg.det
son exactamente las mismas cada vez que generas una matriz aleatoria diferente? Si no, explica por qué.
En la línea 26 del código anterior, se puede ver que el algoritmo se llama a sí mismo. Explique por qué esto no se ejecuta para siempre.