- 积分
- 0
- 注册时间
- 2005-11-6
- 仿真币
-
- 最后登录
- 1970-1-1
|
请教大侠一个简单问题:
用高斯法求矩阵方程AX=B,其中A是N*N矩阵,B是N*M矩阵。
算法输入为:方形矩阵A的行数,A--矩阵A ,M--矩阵B的列数,B--矩阵B。
算法结束后,A为A消元后的上三角矩阵,B为矩阵方程的解X
算法程序为:
subroutine gauss(n,m,a,b)
dimension a(n,n),b(n,m)
eps=1.0e-30
de=1.0
do 10 k=1,n-1
ik=k
do 20 i=k,n
20 if((abs(a(i,k))).gt.(abs(a(ik,k)))) ik=i
if((abs(a(ik,k))).lt.eps) then
write(*,1000)
1000 format('a是奇异的或病态的')
return
end if
if(ik.ne.k) then
de=-de
do 30 j=k,n
r=a(k,j)
a(k,j)=a(ik,j)
30 a(ik,j)=r
do 40 j=1,m
r=b(k,j)
b(k,j)=b(ik,j)
40 b(ik,j)=r
end if
do 50 i=k+1,n
do 60 j=k+1,n
60 a(i,j)=a(i,j)-a(j,k)*a(k,j)/a(k,k)
do 70 j=1,m
70 b(i,j)=b(i,j)-a(i,k)*b(k,j)/a(k,k)
50 continue
10 de=a(k,k)*de
if(abs(a(n,n)).lt.eps) then
write(*,1000)
return
end if
de=a(n,n)*de
do 80 j=1,m
80 b(n,j)=b(n,j)/a(n,n)
do 90 i=n-1,1,-1
do 100 j=1,m
s=0.0
do 110 l=i+1,n
110 s=s+a(i,l)*b(l,j)
100 b(i,j)=(b(i,j)-s)/a(i,i)
90 continue
end
整个程序怎么写啊?主程序是什么啊?请各位指点一下。 |
|