24小时热门版块排行榜    

查看: 1438  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +6 苏东坡二世 2026-08-23 6/300 2026-08-27 13:57 by zhangjianl
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 系统查不到 +10 董八千 2026-08-26 10/500 2026-08-26 16:30 by Equinoxhua
[基金申请] 怎么查啊 +5 huang1991js 2026-08-26 5/250 2026-08-26 16:09 by Equinoxhua
[基金申请] 范进中举一文的中心思想 +9 炎黄贵胄 2026-08-22 10/500 2026-08-26 15:40 by semaglutide
[基金申请] 能否退出参与的面上项目解除限项 +23 koalala 2026-08-24 26/1300 2026-08-26 14:29 by 宝贝虫子
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 为什么国自然不能直接公布 +4 bjdxyxy 2026-08-26 4/200 2026-08-26 13:12 by qingmu1201
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 国合现在查不到了吗? +10 chengyan1220 2026-08-24 20/1000 2026-08-26 08:57 by peasantsprig
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
[基金申请] 明天应该可查了!? +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
[基金申请] 没有任何消息-是不是就凉了 +9 图啦图啦 2026-08-24 10/500 2026-08-25 11:59 by 南海小哥
[基金申请] 我面上完蛋了 +13 且听虎啸 2026-08-20 14/700 2026-08-25 09:10 by mrkang
[基金申请] 建议基金发布提前给出明确的时间点 +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
信息提示
请填处理意见