24小时热门版块排行榜    

查看: 1446  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-09-02 00:19 by xiangy672
[文学芳草园] 梦想 +5 myrtle 2026-08-26 7/350 2026-09-01 15:18 by myrtle
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +7 gdd2018 2026-08-28 12/600 2026-09-01 08:32 by 尼古拉斯小虫
[基金申请] 怎么看青基中了没有啊 +6 叶九微 2026-08-26 6/300 2026-08-31 23:54 by yudaoqian88
[基金申请] 基金未中,这种答复是模板吗? +6 zhaosm1982 2026-08-27 7/350 2026-08-31 21:18 by qdxxmc
[基金申请] 能否申诉? +7 echo8914667 2026-08-30 8/400 2026-08-31 17:00 by yihongxu
[基金申请] 29号明天会评吗 +4 笨笨唐 2026-08-28 4/200 2026-08-31 09:30 by huixian257
[基金申请] 为什么到现在没收到通知? +5 tannykie 2026-08-29 5/250 2026-08-30 21:05 by purplejack
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
[基金申请] 系统查不到 +11 董八千 2026-08-26 11/550 2026-08-28 18:06 by Leogzhya
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 怎么查啊 +6 huang1991js 2026-08-26 6/300 2026-08-28 08:42 by winsaint
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
信息提示
请填处理意见