| 查看: 1438 | 回复: 6 | |||
| 本帖产生 1 个 程序强帖 ,点击这里进行查看 | |||
[交流]
【求助】此程序没有错误,怎么运行不出来?
|
|||
|
|
» 猜你喜欢
有多少人是今天查系统知道结果的?
已经有17人回复
基金不中,共勉
已经有10人回复
青基如何破局
已经有6人回复
国自然面上复盘~欢迎讨论
已经有11人回复
为什么资助数各大高校都创新高,自己申请怎么就这么难
已经有7人回复
基金未中,这种答复是模板吗?
已经有6人回复
看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉……
已经有6人回复
导师吐槽:我怎么摊上了这么个极品研究生!
已经有6人回复
怎么看青基中了没有啊
已经有5人回复
梦想
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
Perl 生物信息学编程求助,运行出现问题,烦请帮忙查找一下错误,谢谢!
已经有3人回复
【求助】程序运行已经无错误,但是输入文件有问题,求教。
已经有23人回复
» 抢金币啦!回帖就可以得到:
三无人员面上一把中散金币
+2/1944
发点金币玩
+5/605
2026年工程管理与智慧城市国际会议 (EMSC 2026)
+1/234
中国基,散金币!!!!!!
+5/164
北京化工大学何静教授团队诚聘青年英才和博士后
+1/95
东华大学材料科学与工程学院丁奇老师招收2026级硕士研究生
+1/89
欢迎保送和统考中科院苏州纳米所的氢能、燃料电池方向的研究生!(长期有效)
+1/57
欢迎报考中科院苏州纳米所的氢能、燃料电池方向的博士生!(长期有效)
+1/57
现在生物医药相关有什么兼职可以做吗?
+1/35
国家蛋白质科学中心(北京),招收分析化学、药学和蛋白质组代谢组学博士研究生
+1/18
新审查指南堵死了"一案双申"的老路,实用新型和发明只能二选一了?
+1/13
浙江大学医学院黄浩杰教授团队招聘4-5名博士后
+1/7
项目助理招聘启事
+1/5
中科院大连化学物理研究所 招聘 催化剂研发方向 科研助理 2名
+1/4
细胞治疗全流程关键检测技术与研究策略
+1/3
南方医科大学深圳医院陈烨/余涛教授课题组联合培养博士后招聘
+1/2
重大突破!酶法合成破解生物法DNA合成原料“卡脖子”难题
+1/1
量子物理团队招收博士生与博士后
+1/1
中国科学院杭州医学研究所生物医学方向导师招收27年国科大硕士/直博生
+1/1
EI会议征稿!第二届先进复合材料、聚合物和纳米技术国际学术会议(ACMPN 2027)
+1/1
2楼2010-11-24 21:58:16
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
4楼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
6楼2010-11-24 23:49:15
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
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
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
|
因为事先不知道要经过多少次迭代才能收敛,所以不能采用数组方式。其实只需要两个变量即可实现这一迭代过程:一个为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









回复此楼