Intento resolver la factorización LU con pivote:
$$PA=LU$$
Utilizando la subrutina sgeft2 de Lapack. Es una biblioteca de Fortran 90 para álgebra lineal numérica.
He encontrado el $L$ y $U$ matriz, pero no se ha encontrado la $P$ matriz, y es por la IPIV argumento.
IPIV is INTEGER array, dimension (min(M,N))
The pivot indices; for 1 <= i <= min(M,N), row i of the
matrix was interchanged with row IPIV(i).
Interprento este texto como debería tener una matriz de identidad $P \in \Re^{nxn}$ . Entonces debería mover las filas de $P$ dependiendo de lo que el vector $IPIV$ dice. ¿Es esto correcto? He intentado diferentes formas de modelar algún código de MATLAB, pero no consigo encontrar el $P$ matriz.
Ejemplo. Si tengo la matriz $A$
0.300000 0.815502 0.632273 0.217150
0.041052 0.756497 0.383632 0.963453
0.840969 0.653643 0.988885 0.256717
0.464724 0.148658 0.405135 0.055045
0.306172 0.033121 0.250060 0.465494
Entonces me sale el $U$ matriz
0.840969 0.653643 0.988885 0.256717
0.000000 0.724589 0.335359 0.950921
0.000000 0.000000 -0.042955 0.192122
0.000000 0.000000 0.000000 -0.593969
Y $L$ matriz
1.000000 0.000000 0.000000 0.000000
0.048815 1.000000 0.000000 0.000000
0.552605 -0.293337 1.000000 0.000000
0.356731 0.803665 -0.232571 1.000000
0.364071 -0.282713 0.352770 -0.964855
También debería obtener el $P$ matriz
0 0 1 0 0
0 1 0 0 0
0 0 0 1 0
1 0 0 0 0
0 0 0 0 1
Pero en cambio, debido a $IPIV$
3 2 4 4 4
Tengo mi $P$ matriz
0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 1.000000 0.000000 0.000000 0.000000
1.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 1.000000 1.000000 1.000000
0.000000 0.000000 0.000000 0.000000 0.000000
¿Debo haber interpretado mal este texto de arriba?
0 votos
Su interpretación del texto es correcta. La IPIV debe utilizarse elemento por elemento para cambiar la identidad en la permutación final.
0 votos
@VorKir Pero no dará el resultado correcto.