24小时热门版块排行榜    

查看: 1454  |  回复: 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的回帖

weiwei43

至尊木虫 (正式写手)


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

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的回帖

zyj8119

木虫 (著名写手)


引用回帖:
Originally posted by ykwang at 2010-11-24 23:40:35:


仅从下列一段代码看不出你要做什么。例如因为J的初值为0,所以下列代码中用红字划出的Z(i,j)中必然包含了Z(i,0),而按你在Dimension中的说明Z(i,0)是无定义的!因此,建议你先把数学模型搞清楚再修改代码才能见 ...

我就是想用Z的新数值减去Z的旧数值,然后只要这个差值达到收敛标准,就使得循环跳出,其中100000是一个约数,我觉得循环这么多步,应该收敛了,但是假如还没有收敛,怎么办?
6楼2010-11-24 23:49:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ykwang

金虫 (正式写手)


★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
nono2009(金币+2):鼓励应助 2010-11-25 07:41:11
zyj8119(金币+2):谢谢兄台认真回复。。。 2010-11-25 08:27:59
zyj8119(金币+10, 程序强帖+1):谢谢跟进。 2010-12-14 04:22:10
引用回帖:
Originally posted by zyj8119 at 2010-11-24 23:49:15:

我就是想用Z的新数值减去Z的旧数值,然后只要这个差值达到收敛标准,就使得循环跳出,其中100000是一个约数,我觉得循环这么多步,应该收敛了,但是假如还没有收敛,怎么办?

因为事先不知道要经过多少次迭代才能收敛,所以不能采用数组方式。其实只需要两个变量即可实现这一迭代过程:一个为Old,另一个New,并将New的计算过程用一个子程序CalcFun(各种变量)来实现。有关的伪代码如下

     Old = 0D0                                                   给Old赋初值
10    CALL CalcFun(各种变量,New)             计算结果由New返回
     IF(ABS(New-Old).LT.1E-6)GOTO 20        收敛后退出
     Old = New                                                 更新Old
       GOTO 10                                                    构成迭代过程
20   WRITE(*,*)‘Converged!'
7楼2010-11-25 01:08:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 3n8v2C8RimXI 2026-09-13 5/250 2026-09-17 01:26 by Tql5LQhh5rLK
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +7 QUjhNVAcOSff 2026-09-13 8/400 2026-09-17 01:16 by Tql5LQhh5rLK
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 mibUvS8DDCwf 2026-09-15 3/150 2026-09-16 23:28 by Tql5LQhh5rLK
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +5 Aj1rhIDL5ixY 2026-09-14 5/250 2026-09-16 21:39 by MHf40yA0Uhyb
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 s3fFTmArrBt6 2026-09-13 3/150 2026-09-16 18:39 by rRvxEj3zorCy
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +8 QUjhNVAcOSff 2026-09-13 11/550 2026-09-16 18:37 by rRvxEj3zorCy
[考研] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 6F5UbRU2I5hL 2026-09-14 4/200 2026-09-16 17:15 by i3KBRD19ERkG
[找工作] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 s3fFTmArrBt6 2026-09-14 4/200 2026-09-16 16:51 by i3KBRD19ERkG
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 s3fFTmArrBt6 2026-09-13 5/250 2026-09-16 15:48 by i3KBRD19ERkG
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +6 LwdutQ8HoqWP 2026-09-13 6/300 2026-09-16 15:24 by i3KBRD19ERkG
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 vZfe6xYu34yj 2026-09-14 3/150 2026-09-16 08:51 by SjQobnC04j06
[硕博家园] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 6F5UbRU2I5hL 2026-09-14 3/150 2026-09-16 05:27 by LH5NkK5Ud4bh
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +5 6F5UbRU2I5hL 2026-09-14 5/250 2026-09-16 05:03 by LH5NkK5Ud4bh
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 s3fFTmArrBt6 2026-09-13 7/350 2026-09-16 03:26 by DgNGHc3h5tPl
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +7 QUjhNVAcOSff 2026-09-13 8/400 2026-09-16 02:23 by DgNGHc3h5tPl
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 Aj1rhIDL5ixY 2026-09-14 3/150 2026-09-15 20:26 by zNcEhTcH7ihq
[教师之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 6F5UbRU2I5hL 2026-09-14 3/150 2026-09-15 08:14 by C79jjtjAKjEn
[教师之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 s3fFTmArrBt6 2026-09-13 4/200 2026-09-15 07:02 by 5BDX0d0WFp7t
[教师之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 LwdutQ8HoqWP 2026-09-13 4/200 2026-09-14 16:13 by Aj1rhIDL5ixY
[考博] 西北工业大学材料学院电化学传感与催化课题组招收2027年推免研究生、博士生、博士后 +3 马方园 2026-09-10 4/200 2026-09-14 09:29 by Chem张zz
信息提示
请填处理意见