부분적 피벗과 함께 행렬의 LU 분해를 계산하는 프로그램을 작성 중입니다. 프로그램을 여러 번 실행하지 않고 여러 (2 또는 3) 행렬을 출력하여 각 행을 개별적으로 출력하지 않고 싶습니다. 한 번에 원하는 모든 것을 얻을 수 있기 때문에 시간 낭비입니다. 이 일을하는 방법이 있습니까? 예를 들어, pivoting이 필요없는 사각형 행렬에 대해 Doolittle의 알고리즘을 사용하는 함수가 있습니다. 나는 출력을 행렬 l과 u로하고 싶지만, 그렇게 할 수있는 방법은 모른다.fortran 함수에서 2 개 이상의 배열을 출력하는 방법은 무엇입니까?
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
항상 사용 태그 [태그 : FORTRAN]. 구별 할 필요가있는 곳에 특정 버전을 추가하십시오. 매우 적은 수의 사람들 만 [tag : fortran95]을 따릅니다. –
물론 이런 종류의 일을하는 방법이 있지만, 당신은 당신의 노력을 보여줘야합니다. 코드는 어떻게 생겼습니까? 어떤 문제를 발견 했습니까? –
나는 온라인에서 약간의 정보를 찾는다. 그러나 나는 그것에 관해 아무것도 발견하지 못했다. 게시물을 편집하고 코드를 추가합니다! 잠시만. –