24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1125  |  回复: 6
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zyj8119

木虫 (著名写手)


[交流] 【求助】此程序没有错误,怎么运行不出来?

CODE:
dimension M(7),omiga(7),Tc(7),Pc(7),Z(7,100000),alpha(7),a(7),b(7)
     *        ,beta(7),q(7),v(7),phi(7),f(7),factor(7)
        real P,r,epsilon,sigma
      parameter(r=83.14,epsilon=1-(2**(0.5)),sigma=1+(2**(0.5)))
        integer i,j
        read(*,*)p1,T
        P=p1/100
        DATA M/16.043,30.070,44.097,58.123,72.150,44.01,28.01/
        DATA omiga/0.012,0.100,0.152,0.2,0.252,0.224,0.048/
        DATA Tc/190.6,305.3,369.8,425.1,469.7,304.2,132.9/
        DATA Pc/45.99,48.72,42.48,37.96,33.70,73.83,34.99/
        do 1 i=1,7
            alpha(i)=(1+(0.37464+1.54226*omiga(i)-0.26992*(omiga(i)**2)*
     *        (1-(T/Tc(i)))**(0.5)))**2
1     continue
      do 2 i=1,7
           a(i)=0.45724*(R**2)*(Tc(i)**2)/Pc(i)*alpha(i)
2     continue
      do 3 i=1,7
           b(i)=0.07779*R*Tc(i)/Pc(i)
3     continue
      do 4 i=1,7
           beta(i)=b(i)*P/(R*T)
4     continue
      do 5 i=1,7
           q(i)=a(i)/(b(i)*R*T)
5     continue
        j=0
      do 6 i=1,7
7           Z(i,(j+1))=1+beta(i)-q(i)*beta(i)*(Z(i,j)-beta(i))/(Z(i,j)+
     *        epsilon*beta(i))*(Z(i,j)+sigma*beta(i))
          do 8 j=1,100000
           factor(i)=(factor(i)-Z(i,j)/Z(i,(j+1)))
8     continue
      if(ABS(Z(i,(j+1))-Z(i,j)).lt.1E-6)goto 7
6     continue
         do 9 i=1,7
        v(i)=(1/(sigma-epsilon))*log((factor(i)+sigma*beta(i))/(factor(i)+
     *epsilon*beta(i)))
9     continue
        do 10 i=1,7
        phi(i)=exp(factor(i)-1-log(factor(i)-beta(i))-q(i)*v(i))
        f(i)=phi(i)*P1
10    continue
      write(*,*)f(i),phi(i)
        end

回复此楼

» 猜你喜欢

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

» 抢金币啦!回帖就可以得到:

查看全部散金贴

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

ykwang

金虫 (正式写手)


zyj8119(金币+3):那应该怎么改? 2010-11-24 22:50:28
这一段代码是错误的
     do 6 i=1,7
7           Z(i,(j+1))=1+beta(i)-q(i)*beta(i)*(Z(i,j)-beta(i))/(Z(i,j)+
     *        epsilon*beta(i))*(Z(i,j)+sigma*beta(i))
          do 8 j=1,100000
           factor(i)=(factor(i)-Z(i,j)/Z(i,(j+1)))
8     continue
      if(ABS(Z(i,(j+1))-Z(i,j)).lt.1E-6)goto 7
正是它导致了“死机”或运行不出来! 原因很简单,你定义数组Z的维数为(7,100000),当对J的循环完成后J=100001;此时执行
      if(ABS(Z(i,(j+1))-Z(i,j)).lt.1E-6)goto 7
第2行(即标号为7的行)对Z(i,(j+1))的赋值就超出了Z的定义范围,由此导致死循环或不可预测的结果。此外,if(ABS(Z(i,(j+1))-Z(i,j)).lt.1E-6)goto 7中的(Z(i,(j+1))也是未定义的

[ Last edited by ykwang on 2010-11-24 at 22:39 ]
3楼2010-11-24 22:33:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

weiwei43

至尊木虫 (正式写手)


zyj8119(金币+5):谢谢!!! 2010-11-24 22:01:02
中间多设几个打印数据,就知道运行到哪里了。也可以采用跟踪运行的方式。
2楼2010-11-24 21:58:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)


引用回帖:
Originally posted by ykwang at 2010-11-24 22:33:36:
这一段代码是错误的
     do 6 i=1,7
7           Z(i,(j+1))=1+beta(i)-q(i)*beta(i)*(Z(i,j)-beta(i))/(Z(i,j)+
     *        epsilon*beta(i))*(Z( ...

你就从常规的数学模型上进行分析呢?
4楼2010-11-24 23:23:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ykwang

金虫 (正式写手)


引用回帖:
Originally posted by zyj8119 at 2010-11-24 23:23:15:
你就从常规的数学模型上进行分析呢?

仅从下列一段代码看不出你要做什么。例如因为J的初值为0,所以下列代码中用红字划出的Z(i,j)中必然包含了Z(i,0),而按你在Dimension中的说明Z(i,0)是无定义的!因此,建议你先把数学模型搞清楚再修改代码才能见效。
      do 6 i=1,7
7           Z(i,(j+1))=1+beta(i)-q(i)*beta(i)*(Z(i,j)-beta(i))/(Z(i,j)+
     *        epsilon*beta(i))*(Z(i,j)+sigma*beta(i))
          do 8 j=1,100000
           factor(i)=(factor(i)-Z(i,j)/Z(i,(j+1)))
8     continue
      if(ABS(Z(i,(j+1))-Z(i,j)).lt.1E-6)goto 7
6     continue

[ Last edited by ykwang on 2010-11-24 at 23:41 ]
5楼2010-11-24 23:40:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见