fortranの質問です。
LUP分解のプログラムのアルゴリズムは下記で良いのでしょうか?また、行を入れ替えるコードが上手くいきません。初心者なので非常に稚拙な質問で恐縮ですが、回答宜しくお願い致します。
U=A L=I P=I do k =1,N-1 |u(i,k)|の最大値でi(>=k)を選ぶ 行列Aの行、A(k,k:n)↔A(i,k:n) 行列Lの行、l(k,1:k-1)↔l(i,1:k-1) 行列Pの行、P(k,:)↔P(i,:) do i=k+1,N A(i,k) = A(i,k)/A(k,k) enddo do j =k+1,N do i=k+1,N A(i,j) = A(i,j) - A(k,j)*A(i,k) end do end do end do do j=1,N-1 do i=j+1,N B(i) = B(i) - A(i,j)*B(j) end do end do do j=N,1,-1 B(j) = B(j)/A(j,j) do i=1,j-1 B(i) = B(i) - A(i,j)*B(j) end do end do RETURN end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。