Fortran Coder

查看: 8784|回复: 3
打印 上一主题 下一主题

[数值问题] 求助Float Invalid Operation

[复制链接]

28

帖子

8

主题

0

精华

熟手

F 币
144 元
贡献
85 点
跳转到指定楼层
楼主
发表于 2017-4-12 17:41:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序最后没有出现错误和警告,但运行之后出现:“Float Invalid Operation” 然后黑色窗口闪了一下,就关了
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

28

帖子

8

主题

0

精华

熟手

F 币
144 元
贡献
85 点
沙发
 楼主| 发表于 2017-4-12 17:43:38 | 只看该作者
这是这个程序

xxx.f90

10.73 KB, 下载次数: 2

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2017-4-12 21:15:45 | 只看该作者
1. 你的各种变量没有初始化。比如主程序 uu , ud , du , dd
2. 学会调试,你会自己解决各种问题。详解 http://v.fcode.cn/video-debugger.html
3. 根据我的调试,你的主要问题大概在
SUBROUTINE tsc(theta,m,k,t)
IMPLICIT NONE
REAL                  :: d,PI
INTEGER,INTENT(in)    :: m
REAL,INTENT(in)       :: theta,k
complex,INTENT(out)      :: t
  d=0.15
  PI=4.0*ATAN(1.0)
  t=SQRT(2.0*(COS(theta))/(k*d))*(SIN((k*SIN(theta)+m*PI/d)*d/2.0)/(SIN(theta)+m*PI/(k*d))&
&+SIN((k*SIN(theta)-m*PI/d)*d/2.0)/(SIN(theta)-m*PI/(k*d)))

END SUBROUTINE

当 theta 大于 PI/2 时,cos 为负数。开 sqrt 出错。

此外,117 行的  DO y=x,y+10,1
这是一个很奇怪的用法。

28

帖子

8

主题

0

精华

熟手

F 币
144 元
贡献
85 点
地板
 楼主| 发表于 2017-4-13 22:17:59 | 只看该作者
fcode 发表于 2017-4-12 21:15
1. 你的各种变量没有初始化。比如主程序 uu , ud , du , dd
2. 学会调试,你会自己解决各种问题。详解 http ...


谢谢你的建议,我刚接触fortran,对它还不是太熟悉,非常感谢你能给我帮助
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 08:10

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表