请教fortran高手:我运行时出现了run-time error M6201 :MATH -sqrt:DOMAIN error ,现在还没解决,请求高手.

run-timeerrorM6201:MATH-sqrt:DOMAINerrorp=(x(i)-x(j))**2+(y(i)-y(j))**2dis=sqrt(p)我做了... run-time error M6201 :MATH -sqrt:DOMAIN error
p=(x(i)-x(j))**2+(y(i)-y(j))**2
dis=sqrt(p)
我做了个do N=20,200,5 这样的循环。这个程序按照下面的方法改,还是没有解决。

还有一个类似的程序run-time error :MATH -atan2:DOMAIN error k(i)=atan2(b(i), a(i)),
也是做了这样的循环后就出现了这样的错误。我把循环改成do N=200,20,-5后,这个问题解决了,但是,在运行时一直只有光标显示,没有结果。不知道是怎么回事?

有哪位英雄帮忙解决,谢谢了,嘻嘻。。。
展开
 我来答
天河流纹石
2012-11-12 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4050万
展开全部
这是 sqrt 和 atan2 函数的定义域出错了,例如负数开方,NaN 开方,等等。

看起来 p=(x(i)-x(j))**2+(y(i)-y(j))**2 应该是大于等于0 的,不会出现负数开方。但如果 x y 本身就出现了 NaN,那么也会使得 p 为 NaN,导致 sqrt 定义域出错。

玩计算的话,Debug 调试是基本功,在 sqrt 处下断点,然后看看 x y 数组里是否出现了 NaN。
单步调试,你会自己解决很多问题。

因为你没给出全部代码,所以我不能代劳。
更多追问追答
追问
我把代码传上,您帮我看一下行吗?或者我发给您邮箱也行。我刚学这个,很多都不懂。
追答
你需要学会 Debug ,而不是让我处理掉你现在遇到的这一个问题。

学会 Debug,对你以后都有用,让我处理掉这一个问题,则只对这次的问题有效。

你的这种问题,Debug 一下,一目了然。在 sqrt 的时候,x y 的值分别是多少?一下就能看出来,是 x y 本身 NaN 了,还是 sqrt 算得不对。
sjzwuww
2012-11-12 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6839
采纳率:82%
帮助的人:2107万
展开全部
x(i)、y(i) 表示什么?都定义了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式