24小时热门版块排行榜    

CyRhmU.jpeg
查看: 597  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

444874095

新虫 (初入文坛)

[求助] 求助关于program的用法已有1人参与

我在电脑上运行一个高斯赛德尔迭代的计算代码,迭代是用子程序给出的。在主程序中,我在首位加入了program main运行后就会出现This name does not match the unit name.不加program就能运行。哪位大神知道只是为什么啊?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

444874095

新虫 (初入文坛)

代码如下
IMPLICIT NONE
DIMENSION A(4,4),B(4),X(4)
DOUBLE PRECISION A,B,X
REAL:: EPS
INTEGER::I,L
DATA A/7.0,9.0,-2.0,1.0,2.0,15.0,-2.0,3.0,1.0,3.0,11.0,2.0,-2.0,-2.0,5.0,13.0/  
DATA B/4.0,7.0,-1.0,0.0/
EPS=1.0E-06
CALL AGSDL(A,B,4,X,EPS,L)
IF (L.NE.0) THEN
  WRITE(*,10) (X(I),I=1,4)
END IF
10 FORMAT(1X,D15.6)
END

SUBROUTINE AGSDL(A,B,N,X,EPS,L)
DIMENSION A(N,N),B(N),X(N)
DOUBLE PRECISION A,B,X,T,S,P,Q
INTEGER::N
DO 5 I=1,N
  IF (ABS(A(I,I))+1.0.EQ.1.0) THEN
L=0
WRITE(*,100)
RETURN
  END IF
5  CONTINUE
100  FORMAT(1X,'FAIL')
L=100
DO 10 I=1,N
10   X(I)=0.0
20   P=0.0
L=L-1
DO 50 I=1,N
  T=X(I)
  S=0.0
  DO 30 J=1,N
IF(J.NE.I) S=S+A(I,J)*X(J)
30  CONTINUE
      X(I)=(B(I)-S)/A(I,I)
      Q=ABS(X(I)-T)/(1+ABS(X(I)))
      IF (Q.GT.P) P=Q
50  CONTINUE
      IF((P.GE.EPS).AND.(L.NE.0)) GOTO 20
      IF(L.EQ.0) WRITE(*,100)
      RETURN
END SUBROUTINE AGSDL
2楼2015-11-10 21:19:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

444874095

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 78506174 at 2015-11-11 11:49:32
PROGRAM MAIN
END PROGRAM MAIN

主程序加上这个就出现上面说的那个错误了。

发自小木虫Android客户端
4楼2015-11-11 11:50:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

444874095

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by 78506174 at 2015-11-11 11:52:15
END 也加上PROGRAM MAIN

加了的。。没有用。。

发自小木虫Android客户端
6楼2015-11-11 11:52:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 444874095 的主题更新
信息提示
请填处理意见