Я пишу программу, которая вычисляет LU-декомпозицию матрицы с частичным поворотом, и я хотел бы, чтобы функция выводила несколько (2 или 3) матрицы без запуска программы несколько раз для вывода каждого из них по отдельности, что является пустая трата времени, так как она получает меня все, что я хочу за один проход. Есть ли способ сделать это? Например, вот моя функция, использующая алгоритм Дулиттла, для квадратной матрицы, которая не требует поворота. Я хочу, чтобы мой вывод был матрицей l и u сразу, но я не знаю, как это сделать.Как вывести 2 или более массивов в функцию 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
Всегда используйте тег [тег: Фортран]. Добавьте определенную версию, если необходимо, чтобы ее отличить. Только очень небольшое количество людей следуют за [tag: fortran95]. –
Конечно, есть способ сделать такие вещи, но вы должны показать свое усилие. Как выглядит ваш код? Какие проблемы вы нашли? –
Я искал некоторую информацию в Интернете, но я ничего не нашел об этом. Я отредактирую сообщение и добавлю свой код! Момент. –