プログラム

LU分解 Fortranバージョ(f77)
C------------------------------ C 連立一次方程式の解を求める C------------------------------ program main parameter(n=3) real a(n,n),b(n),m(n) C--配列の要素-- a(1,1)=5.0 a(1,2)=-2.0 a(1,3)=4.0 a(2,1)=2.0 a(2,2)=0.0 a(2,3)=2.0 a(3,1)=-2.0 a(3,2)=1.0 a(3,3)=-1.0 b(1)=-2.0 b(2)=-1.0 b(3)=1.0 call before(a,b,m,n) call after(a,b,n) write(6,*) b(1) write(6,*) b(2) write(6,*) b(3) end C--前進消去-- subroutine before(a,b,m,n) real a(n,n),b(n),m(n) do 10 k=1,n-1 do 20 i=k+1,n do 30 j=k+1,n m(i)=a(i,k)/a(k,k) a(i,j)=a(i,j)-m(i)*a(k,j) 30 continue b(i)=b(i)-m(i)*b(k) 20 continue 10 continue end C--後退代入-- subroutine after(a,b,n) real a(n,n),b(n),sum do 10 i=n,1,-1 sum=0.0 do 20 j=i+1,n sum=sum-a(i,j)*b(j) 20 continue b(i)=(b(i)+sum)/a(i,i) 10 continue end
書いてみました。

協力者:Shadow-HK(ベース書いたヒト) これはまだピボット選択できないバージョンなので使えないときもあります。もしもピボット選択バージョンも欲しいと思う時はメールして下さい。


Last modified: 2000年1月27日 obayasu@sol.dti.ne.jp