回 帖 发 新 帖 刷新版面

主题:程序运行问题

下面的程序,摁f5运行时,出现了这样的提示,请问这是什么意思?
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
The thread 0x938 has exited with code -1073741756 (0xC0000044).
The program 'E:\R_K Method\erweileinuofangcheng\Debug\yalishuzhijie.exe' has exited with code -1073741756 (0xC0000044).



subroutine ssor(a,b,c,d,e,f,n,m,x,eps,om,ii)
parameter(imax=100000)
real a(n-1,m-1),b(n-1,m-1),c(n-1,m-1),d(n-1,m-1),e(n-1,m-1),f(n-1,m-1),x(n-1,m-1)
integer i,j,ii
real r,rx
do i=1,n-1
     do j=1,m-1
      r=1/e(i,j)
      f(i,j)=f(i,j)*r
      a(i,j)=a(i,j)*r
      b(i,j)=b(i,j)*r
      c(i,j)=c(i,j)*r
      d(i,j)=d(i,j)*r
    enddo
end do
do ii=1,imax
   rx=0.0
   do i=1,n-1
      do j=1,m-1
      r=f(i,j)
         r=r-e(i,j)*x(i,j)
      enddo
      if (abs(r)>rx)rx=abs(r)
         x(i,j)=x(i,j)+om*r
      enddo
      if(om*rx<=eps) return 
 enddo
pause 'too many iterations'
end subroutine ssor
 program dir12
 ! drive program for routine ssor
 parameter(n=200,m=100,eps=1.e-3,om=1.3)
 parameter(v=0.5,u=0.03141593,w=0.01744444,z=0.02,p=1.570797**2)
 dimension a(n-1,m-1),a1(n-1,m-1),b(n-1,m-1),b1(n-1,m-1),c(n-1,m-1),c1(n-1,m-1)&
   ,d(n-1,m-1),d1(n-1,m-1),e(n-1,m-1),e1(n-1,m-1),f(n-1,m-1),f1(n-1,m-1),x(n-1,m-1)
do i=1,n+1
  x(i,1)=0.0
  x(i,100)=0.0
  enddo
do j=1,m+1
  x(1,j)=0.0
  x(200,j)=0.0
  enddo
do i=1,n
   do j=1,m
   a1(i,j)=(1+(v+z*j*w)*cos((i+0.5)*u))**3
   b1(i,j)=(1+(v+z*j*w)*cos((i-0.5)*u))**3
   c1(i,j)=p*(1+(v+z*(j+0.5)*w)*cos(i*u))**3
   d1(i,j)=p*(1+(v+z*(j-0.5)*w)*cos((i+0.5)*u))**3 
   e1(i,j)= a1(i,j)+b1(i,j)+c1(i,j)+d1(i,j)
   f1(i,j)=3*u*((v+z*j*w)*cos((i+0.5)*u)-(v+z*j*w)*cos((i-0.5)*u))
   enddo
 enddo
 do i=1,n
    do j=1,m
     a(i,j)=a1(i,j)
     b(i,j)=b1(i,j)
     c(i,j)=c1(i,j)
     d(i,j)=d1(i,j) 
     e(i,j)=e1(i,j)
   enddo
enddo
do l=1,n-1
   do k=1,m-1
   f(l,k)=f1(l,k)
   x(l,k)=0.0
   enddo
enddo
call ssor(a,b,c,d,e,f,n,m,x,eps,om,ii)
write(*,*) 'solution vector'
write(*,'(1x,<kk>f12.9)') ((x(l,k),l=1,n-1),k=1,m-1)
write(*,*) 'iteration times=',ii
end

回复列表 (共3个回复)

沙发

你定义的数组 不越界吗?

 dimension a(n-1,m-1),a1(n-1,m-1),b(n-1,m-1),b1(n-1,m-1),c(n-1,m-1),c1(n-1,m-1)&
   ,d(n-1,m-1),d1(n-1,m-1),e(n-1,m-1),e1(n-1,m-1),f(n-1,m-1),f1(n-1,m-1),x(n-1,m-1)
do i=1,n+1
  x(i,1)=0.0
  x(i,100)=0.0
  enddo
do j=1,m+1
  x(1,j)=0.0
  x(200,j)=0.0
  enddo

用 implicit none,先自己修改。

板凳

经修改,程序能运行了,但并不代表“正确”。

subroutine ssor(a,b,c,d,e,f,n,m,x,eps,om,ii)
  implicit none
  integer, parameter:: imax=100000
  integer:: n, m 
  real:: om
  real:: eps
  real:: a(n-1,m-1),b(n-1,m-1),c(n-1,m-1),d(n-1,m-1),e(n-1,m-1),f(n-1,m-1),x(n-1,m-1)
  integer:: ii

  integer i,j
  real r,rx
  do i=1,n-1
       do j=1,m-1
        r=1/e(i,j)
        f(i,j)=f(i,j)*r
        a(i,j)=a(i,j)*r
        b(i,j)=b(i,j)*r
        c(i,j)=c(i,j)*r
        d(i,j)=d(i,j)*r
      enddo
  end do
  do ii=1,imax
    rx=0.0
    do i=1,n-1
      do j=1,m-1
        r=f(i,j)
        r=r-e(i,j)*x(i,j)
        x(i,j)=x(i,j)+om*r   ! change position to the cycle
      enddo
      if (abs(r)>rx) rx=abs(r)
      
    end do
      if(om*rx<=eps) return 
  end do
  write(*, *) 'too many iterations'
end subroutine ssor




 program dir12
   implicit none
   ! drive program for routine ssor
   integer, parameter:: n=200, m=100
   real, parameter:: eps=1.e-3, om=1.3 
   real, parameter:: v=0.5,u=0.03141593,w=0.01744444,z=0.02,p=1.570797**2 
   real:: a(n-1,m-1),a1(n-1,m-1)
   real:: b(n-1,m-1),b1(n-1,m-1)
   real:: c(n-1,m-1),c1(n-1,m-1) 
   real:: d(n-1,m-1),d1(n-1,m-1)
   real:: e(n-1,m-1),e1(n-1,m-1)
   real:: f(n-1,m-1),f1(n-1,m-1)
   real:: x(n-1,m-1)
   integer:: i, j, k, l
   integer:: ii 
   do i=1,n-1
     x(i,1)=0.0
     x(i,m-1)=0.0
   enddo
   do j=1,m-1
     x(1,j)=0.0
     x(n-1,j)=0.0
   enddo
   do i=1,n-1
     do j=1,m-1
       a1(i,j)=(1+(v+z*j*w)*cos((i+0.5)*u))**3
       b1(i,j)=(1+(v+z*j*w)*cos((i-0.5)*u))**3
       c1(i,j)=p*(1+(v+z*(j+0.5)*w)*cos(i*u))**3
       d1(i,j)=p*(1+(v+z*(j-0.5)*w)*cos((i+0.5)*u))**3 
       e1(i,j)= a1(i,j)+b1(i,j)+c1(i,j)+d1(i,j)
       f1(i,j)=3*u*((v+z*j*w)*cos((i+0.5)*u)-(v+z*j*w)*cos((i-0.5)*u))
     enddo
   enddo
   do i=1,n-1
      do j=1,m-1
       a(i,j)=a1(i,j)
       b(i,j)=b1(i,j)
       c(i,j)=c1(i,j)
       d(i,j)=d1(i,j) 
       e(i,j)=e1(i,j)
     enddo
  enddo
  do l=1,n-1
     do k=1,m-1
     f(l,k)=f1(l,k)
     x(l,k)=0.0
     enddo
  enddo
  call ssor(a,b,c,d,e,f,n,m,x,eps,om,ii)
  write(*,*) 'solution vector'
  do l = 1, n - 1, 1
    write(*, *) x(l, 1 : m-1)
  end do
  write(*,*) 'iteration times=',ii
  stop
end program

3 楼


恩,程序还有别的问题,我正在修改,感谢指点。

我来回复

您尚未登录,请登录后再回复。点此登录或注册