24小时热门版块排行榜    

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

霹雳旋风

荣誉版主 (著名写手)

[求助] 求高人帮忙看一下我这个Fortran程序的错误出在哪里?

程序代码如下:


    program ganeiliwucha
                implicit none
        External FS
        Integer I,L,N
        Dimension X(2),Y(2),C(2)
        Double Precision X, Y, EPS,C
        open (2000, file='test.dat', status='old' )
        Data X/0.00,0.01/
           EPS=1.0E-06
        CALL DSNSE(2,EPS, X, Y, FS, L)
        IF(L.GT.0)then
       C(1)=cos(X(2))/sin(X(1)+X(2))*tan(20.0/180*3.14)-1.0   ! AC杆的内力误差
    C(2)=cos(X(1))/sin(X(1)+X(2))*sin(20.0/180*3.14)-1.0   ! BC杆的内力误差
        do I=1,2
    write(2000,*) X(I)
        end do
    end IF
        close(2000)
        end

        SUBROUTINE DSNSE(N,EPS,X,Y,FS,L)
        DIMENSION X(N),Y(N)
        DOUBLE PRECISION X,Y,F,D,S
        L=500
5        CALL FS(X,N,F,Y)
        IF (F.GE.EPS) THEN
          L=L-1
          IF (L.EQ.0) RETURN
          D=0.0
          DO 20 J=1,N
20          D=D+Y(J)*Y(J)
          IF (D+1.0.EQ.1.0) THEN
            L=-1
            RETURN
          END IF
          S=F/D
          DO 30 I=1,N
30          X(I)=X(I)-S*Y(I)
          GOTO 5
        END IF
        RETURN
        END

    SUBROUTINE FS(X, N, F, Y)
        DIMENSION X(N), Y(N)
        Double precision X,Y,F,F1,F2,DF1,DF2,A,B
          A=20.0/180*3.14                           
          K=0.5
          F1=X(1)+X(2)-cos(A)
          F2=sin(X(1))*cos(A)*(1+K*cotan(A))+SIN(X(2))*(1.0-K/sin(A))-cos(A)
          F=F1*F1+F2*F2
          DF1=1.0
          DF2=cos(X(1))*cos(A)*(1+K*cotan(A))
          Y(1)=2.0*(F1*DF1+F2*DF2)
          DF1=1.0
          DF2=COS(X(2))*(1.0-K/sin(A))
          Y(2)=2.0*(F1*DF1+F2*DF2)
    RETURN
        END

  程序编译通过,但是出现计算数据无法输出的问题,请高手帮忙看一下。不胜感激。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

霹雳旋风

荣誉版主 (著名写手)

引用回帖:
: Originally posted by ygl820 at 2012-02-21 10:24:17:
按你的意思,将文件test.dat作为输出了,运行完成后后,打开它。fortran文件操作性不强,看看test.dat是否只读。

也不是只读。运行可以就是没有输出数据。急死我了。
6楼2012-02-21 10:28:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 13 个回答

夕阳西下

金虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
jjdg(金币+1): 感谢应助 2012-02-20 01:39:45
open (2000, file='test.dat', status='old' )
write(2000,*) X(I)
write 2000这样写是不是有问题呢?
2楼2012-02-19 09:17:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

haizhfly

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
jjdg(金币+1): 感谢应助 2012-02-20 01:39:55
open (2000, file='test.dat', status='old' )
write(2000,*) X(I)

status='old'  要求输出文本 test.dat是已经存在的文件,删去这一文件状态控制语句试一下看,个人觉得最大问题在这里
3楼2012-02-19 11:21:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

霹雳旋风

荣誉版主 (著名写手)

引用回帖:
: Originally posted by haizhfly at 2012-02-19 11:21:31:
open (2000, file='test.dat', status='old' )
write(2000,*) X(I)

status='old'  要求输出文本 test.dat是已经存在的文件,删去这一文件状态控制语句试一下看,个人觉得最大问题在这里

这个我已经调试过。文件能编译完,也能运行,就是没有输出结果。
4楼2012-02-19 19:48:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见