J'écris un programme qui calcule la décomposition LU d'une matrice, avec pivotement partiel, et je voudrais que la fonction produise plusieurs (2 ou 3) matrices sans exécuter le programme plusieurs fois pour sortir chacune individuellement, ce qui est un perte de temps car cela me procure tout ce que je veux en un seul passage. Y-a-t'il une façon de le faire? Par exemple, voici ma fonction utilisant l'algorithme de Doolittle, pour une matrice carrée qui n'a pas besoin de pivoter. Je veux que ma sortie soit matricielle et numérique à la fois, mais je ne connais aucun moyen de le faire.Comment générer deux ou plusieurs tableaux dans une fonction fortran?
function lu_d(aa) result(l)
real, dimension (:,:) :: aa !input matrix
real, dimension (size(aa,1), size(aa,2)) :: a !keeping input variable intact
real, dimension (size(a,1), size(a,2)) :: l , u !lower and upper matrices
integer :: i,j,k !index
real :: s !auxiliar variable
a=aa
do j=1 , size(a,2)
u(1,j)=a(1,j)
end do
l(1,1)=1
do j=2, size(a,2)
l(1,j)=0
end do
do i=2, size(a,1)
l(i,1)=a(i,1)/u(1,1)
u(i,1)=0
do j=2, i-1
s=0
u(i,j)=0
do k=1, j-1
s=s+l(i,k)*u(k,j)
end do
l(i,j)=(a(i,j)-s)/u(j,j)
end do
l(i,i)=1
do j=i, size(a,2)
s=0
l(i,j)=0
do k=1, i-1
s=s+l(i,k)*u(k,j)
end do
u(i,j)=a(i,j)-s
end do
end do
end function
Utilisez toujours balise [tag: Fortran]. Ajouter une version spécifique si nécessaire pour distinguer. Seul un très petit nombre de personnes suit [tag: fortran95]. –
Bien sûr, il y a un moyen de faire ce genre de choses, mais vous devriez faire preuve d'efforts. A quoi ressemble votre code? Quels problèmes avez-vous trouvé? –
Je recherche des informations en ligne, mais je n'ai rien trouvé à ce sujet. Je vais modifier le post, et ajouter mon code! Juste un moment. –