当前位置: 首页 > 程序语言 >程序无法运行怎么回事

程序无法运行怎么回事

作者 夕阳西下
来源: 小木虫 650 13 举报帖子
+关注

program L
implicit none
integer,parameter:: nx=100,nt=100,p=2,te=5,E=2
integer:: i,j
real v

real:: ne(x,t)
real:: n0=5E+2,m=2.1,q=0.6E-19,k=0.514E-9,R=50.0,me=1.2E-3
v=n0*k

x=0.0
t=0.0
do i=1,nx
  x=x+i*0.02
  do j=1,nt
  t=t+j*0.01
  ne(0,0)=0.6E-19
ne(x+i*0.02,t+(j+1)*0.01)=-25*te/(me*v)*ne(x+(i+1)*0.02,t+j*0.01)+(1+50*te/(me*v))*ne(x+i*0.02,t+j*0.01)-25*te/(me*v)*ne(x+(i-1)*0.02,t+j*0.01)
  
open (unit=10,file="1.txt")
write (10,*) ne(x,t)

  end do
end do

stop
end 返回小木虫查看更多

今日热帖
  • 精华评论
  • lurencyj

    fortran的东东我都忘了,哈哈,只是楼主写程序的时候,风格很差,难读。

    可以一步一步自己测试的,不会用debug工具的话,可以用print 屏幕输出; 如果,编译通不过的,那就摸着石头过河,注释掉不确定的,从程序头部开始慢慢往下测。

  • snoopyzhao

    你这个程序中有太多的错误,先根据编译器的提示进行修改……

    举个例子:
    real:: ne(x,t)
    中的 x,t 都不是常数,那么,你的 ne 的定义就是错误的
    ne(0,0)=0.6E-19
    默认情况下数组的下标是从 1,1 开始的……
    ne(x+i*0.02,t+(j+1)*0.01)=
    下标不能是实数,只能是整数……
    等等……

  • 夕阳西下

    引用回帖:
    3脗楼: Originally posted by snoopyzhao at 2012-02-23 14:09:20:
    脛茫脮芒赂枚鲁脤脨貌脰脨脫脨脤芦露脿碌脛麓铆脦贸拢卢脧脠赂霉戮脻卤脿脪毛脝梅碌脛脤谩脢戮陆酶脨脨脨脼赂脛隆颅隆颅

    戮脵赂枚脌媒脳脫拢潞
    real:: ne(x,t)
    脰脨碌脛 x,t 露录虏禄脢脟鲁拢脢媒拢卢脛脟脙麓拢卢脛茫碌脛 ne 碌脛露篓脪氓戮脥脢脟麓铆脦贸碌脛
    ne(0,0)=0.6E-19
    脛卢脠脧脟茅驴枚脧脗脢媒脳茅碌脛脧脗卤锚脢脟麓脫 1,1 驴陋脢录碌脛隆颅隆颅 ...

    ne(x,t)脠莽鹿没卤铆脢戮碌脛脢脟潞炉脢媒鹿脴脧碌脛脴拢驴脪虏戮脥脢脟脣碌ne鹿脴脫脷x,t碌脛潞炉脢媒拢卢赂脙脭玫脙麓露篓脪氓ne?

  • snoopyzhao

    引用回帖:
    4脗楼: Originally posted by 脧娄脩么脦梅脧脗 at 2012-02-23 23:33:50:
    ne(x,t)脠莽鹿没卤铆脢戮碌脛脢脟潞炉脢媒鹿脴脧碌脛脴拢驴脪虏戮脥脢脟脣碌ne鹿脴脫脷x,t碌脛潞炉脢媒拢卢赂脙脭玫脙麓露篓脪氓ne?

    脛脟脛茫脪陋脨麓脙梅脕陆脮脽脢脟脡露鹿脴脧碌拢卢卤脠脠莽

    ne = a * x + b * t

    驴脡脪脭脫脙脪禄赂枚碌楼露脌碌脛潞炉脢媒脌麓脨麓隆颅隆颅

  • 夕阳西下

    引用回帖:
    5脗楼: Originally posted by snoopyzhao at 2012-02-24 08:46:54:
    脛脟脛茫脪陋脨麓脙梅脕陆脮脽脢脟脡露鹿脴脧碌拢卢卤脠脠莽

    ne = a * x + b * t

    驴脡脪脭脫脙脪禄赂枚碌楼露脌碌脛潞炉脢媒脌麓脨麓隆颅隆颅

    脗茅路鲁脛茫掳茂脦脪驴麓驴麓脮芒赂枚鲁脤脨貌隆拢 fin.txt  脢盲脠毛路陆鲁脤脧碌脢媒
    脫娄赂脙脭玫脙麓脢盲脠毛脛脴拢驴脦脪脮芒脩霉脢盲脠毛脭玫脙麓虏禄露脭脛脴拢驴脳脺脢脟脤谩脢戮麓铆脦贸A(n,n)
    -5 11 -5 -1 0 0 0
    0  0  0  -5 11 -5
    0  0  0  0  0  0  
    -5 11 -5 -1 0 0
    0  0  0  -5 11 -5
    0  0  0  0  0  0  

    B(n,m)

    0 0 0 0 0 0
    0 0 0 0 0 0
    0 0 0 0 0 0
    0 0 0 0 0 0
    0 0 0 0 0 0
    0 0 0 0 0 0

    module mat_eq
    contains
    subroutine solve(A,B,X,N,M)
    implicit real*8(a-z)
    integer::i,k,N,M
    integer::id_max  !脰梅脭陋脣脴卤锚潞脜

    real*8::A(N,N),B(N,M),X(N,N)

    real*8::Aup(N,N),Bup(N,M)
    !Ab脦陋脭枚鹿茫戮脴脮贸  [AB]
    real*8::AB(N,N+M)

    real*8::vtemp1(N+M),vtemp2(N+M)
    real*8::vtmp(N),xtmp(N)
    AB(1:N,1:N)=A
    AB(:,N+1:N+M)=B
    !  脮芒露脦脢脟 脕脨脰梅脭陋脧没脠楼路篓碌脛潞脣脨脛虏驴路脰
    do k=1,N-1

        elmax=dabs(Ab(k,k))
        id_max=k
       
        !脮芒露脦脦陋虏茅脮脪脰梅脭陋脣脴       
        !脮芒露脦鲁脤脨貌碌脛脰梅脪陋脛驴碌脛虏禄脢脟脦陋脕脣赂鲁脰碌脳卯麓贸脭陋脣脴赂酶elmax拢卢露酶脢脟脦陋脕脣脮脪鲁枚脳卯麓贸脭陋脣脴露脭脫娄碌脛卤锚潞脜       
            do i=k+1,n
          if (dabs(Ab(i,k))>elmax) then
             elmax=Ab(i,k)

             id_max=i
          end if         
        end do   
    !脰脕麓脣拢卢脪脩戮颅脥锚鲁脡虏茅脮脪脳卯麓贸脭陋脣脴拢卢虏茅脮脪脥锚鲁脡脪脭潞贸脫毛  碌脷k脨脨陆禄禄禄
    !陆禄禄禄脕陆脨脨脭陋脣脴拢卢脝盲脣没虏禄卤盲
        vtemp1=Ab(k,
        vtemp2=Ab(id_max,
       
       
        Ab(k,=vtemp2
        Ab(id_max,=vtemp1   
    !脪脭脡脧脪禄麓贸露脦脢脟脦陋陆禄禄禄脕陆脨脨脭陋脣脴拢卢陆禄禄禄脥锚鲁脡脪脭潞贸录麓掳麓脮脮脧没脭陋路篓陆酶脨脨
      
       do i=k+1,27
      
         temp=Ab(i,k)/Ab(k,k)
         
         Ab(i,=Ab(i,-temp*Ab(k,
       
       end do

    end do

    !-----------------------------
    ! 戮颅鹿媒脡脧脪禄虏陆拢卢Ab脪脩戮颅禄炉脦陋脠莽脧脗脨脦脢陆碌脛戮脴脮贸
    !            | *  *  *  *  #  #|
    !     [A b]= | 0  *  *  *  #  #|
    !            | 0  0  *  *  #  #|
    !            | 0  0  0  *  #  #|
    !
    Aup(:,=AB(1:N,1:N)

    do i=1,m
    !碌梅脫脙脫脙脡脧脠媒陆脟路陆鲁脤脳茅碌脛禄脴麓酶路陆路篓
    vtmp=AB(:,N+i)
    call uptri(Aup,vtmp,xtmp,n)
    !掳脩录脝脣茫陆谩鹿没赂鲁脰碌赂酶X
    X(:,i)=xtmp
    end do

    end subroutine solve

    subroutine uptri(A,b,x,N)
    !---------------------------------subroutine  comment
    !  Version   :  V1.0   
    !  Coded by  :  syz
    !  Date      :  2010-4-8
    !-----------------------------------------------------
    !  Purpose   :  脡脧脠媒陆脟路陆鲁脤脳茅碌脛禄脴麓酶路陆路篓
    !                 Ax=b
    !-----------------------------------------------------
    !  Input  parameters  :
    !       1.   A(N,N)脧碌脢媒戮脴脮贸
    !       2.   b(N)脫脪脧貌脕驴
    !       3.   N路陆鲁脤脦卢脢媒
    !  Output parameters  :
    !       1.  x  路陆鲁脤碌脛赂霉
    !       2.
    !  Common parameters  :
    !
    !----------------------------------------------------

    implicit real*8(a-z)

    integer::i,j,N

    real*8::A(N,N),b(N),x(N)

    x(N)=b(N)/A(N,N)

    !禄脴麓酶虏驴路脰
    do i=n-1,1,-1
       
        x(i)=b(i)
       do j=i+1,N
        x(i)=x(i)-a(i,j)*x(j)
       end do
        x(i)=x(i)/A(i,i)

    end do

    end subroutine uptri

    subroutine driver(N,M)
    !---------------------------------subroutine  comment
    !  Version   :  V1.0   
    !  Coded by  :  syz
    !  Date      :  2010-4-8
    !-----------------------------------------------------
    !  Purpose   : 脟媒露炉鲁脤脨貌
    !-----------------------------------------------------
    !  Input  parameters  :
    !       1.   N     脙猫脢枚 A(N,N)
    !       2.   M     脙猫脢枚路陆鲁脤   X(N,M)拢卢B(N,M)
    !  Output parameters  :
    !       1.  
    !       2.
    !  P.S  :
    !      N,M  麓脫脦脛录镁脰脨露脕脠隆
    !
    !----------------------------------------------------

    implicit real*8(a-z)

    integer::N,M

    integer::i,j
    real*8::A(N,N),B(N,M),X(N,M)

    read(11,*) A(N,N)
    read(11,*) B(N,M)


    call solve(A,B,X,N,M)



    write(12,*) X(n,m)




    end subroutine driver


    end module mat_eq




    program main
    !--------------------------------------program comment
    !  Version   :  V1.0   
    !  Coded by  :  syz
    !  Date      :  2010-4-8
    !-----------------------------------------------------
    !  Purpose   :  脧没脠楼路篓陆芒戮脴脮贸路陆鲁脤
    !   
    !-----------------------------------------------------
    !  In put data  files :
    !       1.  fin.txt  脢盲脠毛路陆鲁脤脧碌脢媒
    !       2.
    !  Output data files  :
    !       1. fout.txt  录脝脣茫陆谩鹿没
    !       2.
    !-----------------------------------------------------
    !  Post Script :
    !       1.    脨猫脪陋脳录卤赂脢盲脠毛脢媒戮脻
    !       2.    脫脡脫脷脟媒露炉潞炉脢媒碌梅脫脙路陆路篓潞炉脢媒
    !-----------------------------------------------------
    use mat_eq
    integer::N,M
    open(unit=11,file='fin.txt')
    open(unit=12,file='fout.txt')

    call driver(N,M)
    end program main

  • syliu

    看了你的程序,至少找到两个错误。在读取A(N,N)前没有定义N的数值(也没有定义B(M,N)中的M,子程序subroutine driver(N,M)说明中说从文件读取,但没看到相应地语句哦。另外可能就是你的fin.txt文件第一行有7个数而不是6个哟。

  • 夕阳西下

    引用回帖:
    7脗楼: Originally posted by syliu at 2012-02-28 17:18:53:
    驴麓脕脣脛茫碌脛鲁脤脨貌拢卢脰脕脡脵脮脪碌陆脕陆赂枚麓铆脦贸隆拢脭脷露脕脠隆A(N,N)脟掳脙禄脫脨露篓脪氓N碌脛脢媒脰碌(脪虏脙禄脫脨露篓脪氓B(M,N)脰脨碌脛M拢卢脳脫鲁脤脨貌subroutine driver(N,M)脣碌脙梅脰脨脣碌麓脫脦脛录镁露脕脠隆拢卢碌芦脙禄驴麓碌陆脧脿脫娄碌脴脫茂戮盲脜露隆拢脕铆脥芒驴脡脛脺戮脥脢脟脛茫碌脛fin.txt脦脛录镁碌脷脪禄脨脨脫脨7赂枚脢媒露酶 ...

    N碌脛脢媒脰碌脢脟麓脫脦脛录镁脰脨露脕脠隆拢卢禄鹿脨猫脪陋露篓脪氓拢驴
    脦脛录镁脰脨碌脛脢媒戮脻脠莽脧脗拢卢脦陋脢虏脙麓禄鹿脢脟麓铆脦贸拢驴
    A(n,n)
    -5 11 -5 -1 0 0 0
    0  0  0  -5 11 -5
    0  0  0  0  0  0  
    -5 11 -5 -1 0 0
    0  0  0  -5 11 -5
    0  0  0  0  0  0  

    B(n,m)

    0 0 0 0 0 0
    0 0 0 0 0 0
    0 0 0 0 0 0
    0 0 0 0 0 0
    0 0 0 0 0 0
    0 0 0 0 0 0

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓