回 帖 发 新 帖 刷新版面

主题:[讨论]关于IMSL库中积分函数QDADS解算module中函数的问题

简单描述下问题,主函数:main;
module:m1;
module中定义的函数F。 

如果在main中用QDADS解算F,会出现错误提示 
error #7061: The characteristics of dummy argument 1 of the associated actual procedure differ from the characteristics of dummy argument 1 of the dummy procedure. (12.2)   [F]

尝试将F拿出module,在main中定义其external属性,积分能够正常运算,请问是什么原因导致这种现象出现?难道QDADS只认F的external属性吗? 我认为F函数contains在module里面,也应该是external属性啊。谢谢大家! 

回复列表 (共4个回复)

沙发

我现在也遇到这个问题,也是在调用IMSL里面的函数UMIDH的时候出了问题。更要命的是,我的那个本应该设为external的、作为参数传递给UMIDH子程序,必须要写在module中,否则无法写出表达式来(就是说这个表达式的写法里必须用到其他函数和变量)。

不知道楼主解决了问题没?


有高手能帮忙吗?小弟万分感激了~~!

板凳

已经清楚了,是返回值的精度问题。

3 楼

[quote]已经清楚了,是返回值的精度问题。[/quote]
你好,能说的具体些吗?谢谢

4 楼

你把它改成S_QDAGS 或 D_QDAGS试试。看下面IMSL库说明:
QDAGS
Integrates a function (which may have endpoint singularities).

Required Arguments
F — User-supplied FUNCTION to be integrated. The form is
F(X), where

X −Independent variable.   (Input)

F − The function value.   (Output)

     F must be declared EXTERNAL in the calling program.

A — Lower limit of integration.   (Input)

B — Upper limit of integration.   (Input)

RESULT — Estimate of the integral from A to B of F.   (Output)

Optional Required Arguments
ERRABS — Absolute accuracy desired.   (Input)
Default: ERRABS = 1.e-3 for single precision and 1.d-8 for double precision.

ERRREL — Relative accuracy desired.   (Input)
Default: ERRREL = 1.e-3 for single precision and 1.d-8 for double precision.

ERREST — Estimate of the absolute value of the error.   (Output)

FORTRAN 90 Interface
Generic:          CALL QDAGS (F, A, B, RESULT [,…])

Specific:         The specific interface names are S_QDAGS and D_QDAGS.

FORTRAN 77 Interface
Single:            CALL QDAGS (F, A, B, ERRABS, ERRREL, RESULT, ERREST)

Double:          The double precision name is DQDAGS.

我来回复

您尚未登录,请登录后再回复。点此登录或注册