找回密码
 注册
Simdroid-非首页
查看: 120|回复: 1

请教大侠一个简单问题

[复制链接]
发表于 2006-8-4 09:38:56 | 显示全部楼层 |阅读模式 来自 江苏南京
请教大侠一个简单问题:
用高斯法求矩阵方程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

整个程序怎么写啊?主程序是什么啊?请各位指点一下。
发表于 2006-11-18 05:44:00 | 显示全部楼层 来自 美国
Simdroid开发平台
看过帖子的大概都服了你了,这个高斯消元的子程序已经写好了。
你自己编一个主程序,里面包括读入你的矩阵,然后调用该子程序,
然后输出你的结果。事情不复杂,自己亲自写写。整个主程序不会
超过五十行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 19:21 , Processed in 0.026746 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表