dvbbs
收藏本页
联系我们
论坛帮助
dvbbs

>> Fortran语言开发经验交流
搜一搜相关精彩主题 
Fortran中文网Fortran中文网—Fortran语言经验交流Fortran语言开发经验交流 → 请教高斯解方程中gaussj(a,n,np,b,m,mp)中参数a,n,np,b,m,mp分别代表什么

您是本帖的第 3182 个阅读者
树形 打印
标题:
请教高斯解方程中gaussj(a,n,np,b,m,mp)中参数a,n,np,b,m,mp分别代表什么
semi526
帅哥哟,离线,有人找我吗?
等级:新手上路
文章:3
积分:275
门派:无门无派
注册:2009年5月9日
楼主
 用支付宝给semi526付款或购买其商品,支付宝交易免手续费、安全、快捷! 点击这里发送电子邮件给semi526

发贴心情
请教高斯解方程中gaussj(a,n,np,b,m,mp)中参数a,n,np,b,m,mp分别代表什么
请教高斯解方程中gaussj(a,n,np,b,m,mp)中参数a,n,np,b,m,mp分别代表什么?

  
   SUBROUTINE gaussj(a,n,np,b,m,mp)
  IMPLICIT REAL*8(A-H,O-Z)
PARAMETER (NMAX=4000)
C      INTEGER m,mp,n,np,NMAX
c      REAL a(np,np),b(np,mp)
DIMENSION a(np,np),b(np,mp)
      INTEGER i,icol,irow,j,k,l,ll,indxc(NMAX),indxr(NMAX),ipiv(NMAX)
c      REAL big,dum,pivinv
C DOUBLE PRECISION big,dum,pivinv
      do 11 j=1,n
        ipiv(j)=0
11    continue
      do 22 i=1,n
c WRITE(*,*) "I=",I
        big=0.
        do 13 j=1,n
          if(ipiv(j).ne.1)then
            do 12 k=1,n
              if (ipiv(k).eq.0) then
                if (abs(a(j,k)).ge.big)then
                  big=abs(a(j,k))
                  irow=j
                  icol=k
                endif
C WRITE(*,*) I,J
              else if (ipiv(k).gt.1) then
           WRITE(*,*) I,J
                pause 'is singular matrix in gaussj'
              endif
12          continue
          endif
13      continue
        ipiv(icol)=ipiv(icol)+1
        if (irow.ne.icol) then
          do 14 l=1,n
            dum=a(irow,l)
            a(irow,l)=a(icol,l)
            a(icol,l)=dum
14        continue
          do 15 l=1,m
            dum=b(irow,l)
            b(irow,l)=b(icol,l)
            b(icol,l)=dum
15        continue
        endif
        indxr(i)=irow
        indxc(i)=icol
        if (a(icol,icol).eq.0.) pause 'singular matrix in gaussj'
        pivinv=1./a(icol,icol)
        a(icol,icol)=1.
        do 16 l=1,n
          a(icol,l)=a(icol,l)*pivinv
16      continue
        do 17 l=1,m
          b(icol,l)=b(icol,l)*pivinv
17      continue
        do 21 ll=1,n
          if(ll.ne.icol)then
            dum=a(ll,icol)
            a(ll,icol)=0.
            do 18 l=1,n
              a(ll,l)=a(ll,l)-a(icol,l)*dum
18          continue
            do 19 l=1,m
              b(ll,l)=b(ll,l)-b(icol,l)*dum
19          continue
          endif
21      continue
22    continue
      do 24 l=n,1,-1
        if(indxr(l).ne.indxc(l))then
          do 23 k=1,n
            dum=a(k,indxr(l))
            a(k,indxr(l))=a(k,indxc(l))
            a(k,indxc(l))=dum
23        continue
        endif
24    continue
      return
     END
ip地址已设置保密
2010/1/23 13:23:56

 1   1   1/1页      1    
网上贸易 创造奇迹! 阿里巴巴 Alibaba
Powered By Dvbbs Version 7.1.0 Sp1
Copyright ©2005 - 2008 www.fortran.cn
页面执行时间 0.09375 秒, 5 次数据查询
京ICP备05056801号