Я пишу программу, которая вычисляет LU-разложение матрицы с частичным поворотом, и я хотел бы, чтобы функция выводила несколько (2 или 3) матриц без запуска программы несколько раз для вывода каждой по отдельности, что является пустой тратой времени. раз с тех пор, как он дает мне все, что я хочу, за один раз. Есть ли способ сделать это? Например, вот моя функция, использующая алгоритм Дулиттла для квадратной матрицы, которая не требует поворота. Я хочу, чтобы мой вывод был матрицей l и u одновременно, но я не знаю, как это сделать.
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
m
в вашем коде, поэтому я все еще не уверен, что именно вы хотите, но я думаю, что будет проще с подпрограммой вместо функции. - person Vladimir F   schedule 12.09.2016