Fortran Coder

楼主: 依旧是则徐
打印 上一主题 下一主题

[数学库] IMSL编译错误,This name has already been used as an external function name.

[复制链接]

737

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
705 元
贡献
361 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

11#
发表于 2015-4-7 13:36:05 | 只看该作者
楼主的完整代码在 7 楼。

但是我不知道他之前的越界怎么改的,所以也不知道问题在哪儿。

sqrt domian 常见于负数开方。

11

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
26 点
12#
 楼主| 发表于 2015-4-7 14:39:10 | 只看该作者
楚香饭 发表于 2015-4-7 13:36
楼主的完整代码在 7 楼。

但是我不知道他之前的越界怎么改的,所以也不知道问题在哪儿。

越界问题 是把variable模块中的sk3(3,0:2,0:22)改成了sk3(3,0:22,0:5) 改过之后,在运行就出现了sqrt domain,我检查了一下,sqrt里面的值都是平方项的和,不应该出现负值啊,请楚香饭师兄帮忙看看。看能否发现错误,

11

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
26 点
13#
 楼主| 发表于 2015-4-7 15:55:07 | 只看该作者
pasuka 发表于 2015-4-7 13:22
1、请贴出完整的代码,这样挤牙膏的话,就怕下次再发帖就风干喽
2、sqrt默认输入正实数,请检查以下输入 ...

谢谢来帮我解决问题,http://pan.baidu.com/s/1o6tA04M这是链接。如果有空暇,请帮我看看问题在哪?

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

14#
发表于 2015-4-7 19:15:49 | 只看该作者
依旧是则徐 发表于 2015-4-7 15:55
谢谢来帮我解决问题,http://pan.baidu.com/s/1o6tA04M这是链接。如果有空暇,请帮我看看问题在哪? ...

粗看代码,没啥注释,也没发现啥问题,由于未装imsl所以没法编译测试
若是被导师强迫写Fortran程序的话,趁早和导师商量改matlab吧,相比Fortran往往事半功倍

737

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
705 元
贡献
361 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

15#
发表于 2015-4-7 20:05:05 | 只看该作者
依旧是则徐 发表于 2015-4-7 14:39
越界问题 是把variable模块中的sk3(3,0:2,0:22)改成了sk3(3,0:22,0:5) 改过之后,在运行就出现了sqr ...

sqrt domain 不一定就是负数,有时候本身就是 NaN 也会出错。
至少在我这里,发现很多容易出负数的地方。

例如 130.f90 文件
YITABOU3(i)=Amp*DCOS(WK*X3(i)-W1*T)&
                  -Amp**2*WK/(2*DSINH(2*WK*H)) &
这里的 WK 为 0,导致分母为0

wk 应该是在更早的代码计算:
wk=newton(a,func,dfunc)
这里计算结果为0

可能是由此导致的 NaN

正如 pasuka 所言,没有注释的代码比较难看懂。我想你学习一下如何 Debug 单步运行,或许会让你自己更容易检查错误。

本站的文章:http://debug.w.fcode.cn 会指导你如何学习 Debug

11

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
26 点
16#
 楼主| 发表于 2015-4-7 20:15:56 | 只看该作者
楚香饭 发表于 2015-4-7 20:05
sqrt domain 不一定就是负数,有时候本身就是 NaN 也会出错。
至少在我这里,发现很多容易出负数的地方。 ...

确实是有很多NaN错误,谢谢师兄!我这就看看Debug单步运行的文章。有问题我再来请教!

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

17#
发表于 2015-4-7 20:58:31 | 只看该作者
楚香饭 发表于 2015-4-7 20:05
sqrt domain 不一定就是负数,有时候本身就是 NaN 也会出错。
至少在我这里,发现很多容易出负数的地方。 ...

说实话,lz真不如直接matlab写个验证程序,调试起来也不会这么折磨人

11

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
26 点
18#
 楼主| 发表于 2015-4-7 21:48:10 | 只看该作者
pasuka 发表于 2015-4-7 20:58
说实话,lz真不如直接matlab写个验证程序,调试起来也不会这么折磨人

师兄,我现在是刚学用fortran,这个程序也是我自己写的,我也知道有很多错误问题。你说的matlab 验证程序我还不会呢。正想办法学,

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

19#
发表于 2015-4-7 22:14:55 | 只看该作者
依旧是则徐 发表于 2015-4-7 21:48
师兄,我现在是刚学用fortran,这个程序也是我自己写的,我也知道有很多错误问题。你说的matlab 验证程序 ...

个么改行来得及,matlab对照帮助文档的例子或者网上找些资料,三周就能入门,搞不定的问题就上网搜索,相关资料可谓铺天盖地,不少高校还购买正版了
Fortran的话,没有C、C++的基础,怎么也得花上三个月到半年的时间入门
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-25 09:57

Powered by Tencent X3.4

© 2013-2024 Tencent

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