回 帖 发 新 帖 刷新版面

主题:一个计算积分的书上程序,出错了!

这是从MATH_IMSL6.0指导上抄的一个用QDAGS求积分的程序。
QDAGS(F,A,B,RESULT,ERRABS,ERRREL,ERREST)
F,被积函数
A,B 积分上下限
RESULT 积分结果
ERRABS  期望的绝对精度
ERRREL 期望的相对精度
ERREST 返回的绝对误差
下面这个是计算  f(x)=ln(x)/sqrt(x)在0到1的积分值

program jifenQDAGS
     use imsl
     implicit none
     real a,abs,b,erra,errest,f,res
     intrinsic abs
     external f
     ERRA=1.0e-4

     a=0.0
     b=1.0
     
   CALL QDAGS (F, A, B, RES, ERRA, ERREST)     

   WRITE (*,*) RES, ERREST
    END      
      
    REAL FUNCTION F (X)
    REAL X      
    REAL ALOG, SQRT
    F = ALOG(X)/SQRT(X)
    RETURN      
    END      

但是提示出错了,为什么呢?
D:\spintransport\jifenexam1.f90(12) : Error: A non-optional actual argument must be present when invoking a procedure with an explicit interface.   [ERREST]
   CALL QDAGS (F, A, B, RES, ERRA, ERREST)

回复列表 (共4个回复)

沙发

QDAGS(F,A,B,RESULT,ERRABS,ERRREL,ERREST)
有7个参数,
CALL QDAGS (F, A, B, RES, ERRA, ERREST)
你的call有6个. 除非最后一个是optional的属性, 否则需要参数对应的(关键词方式调用可以不对应).

板凳

你说的很对啊。但是为什么不能给出正确结果呢?给出的结果老是0.后来我又换个函数试了下f(x)=x**2,还是0
    program jifenQDAGS
     use imsl
     implicit none
     real a,abs,b,erra,errest,f,res,errrel
     intrinsic abs
     external f
     ERRA=1.0e-3
     ERRREL=1.0e-2
     a=0.0
     b=3.0

   CALL QDAGS (F, A, B, RES, ERRA,ERRREL, ERREST)

   WRITE (*,*) RES, ERREST
    END      
      
    REAL FUNCTION F (X)
    REAL X      
    
    F = x**2
    RETURN      
    END     

3 楼


你说的很对啊。但是为什么不能给出正确结果呢?给出的结果老是0.后来我又换个函数试了下f(x)=x**2,还是0
    program jifenQDAGS
     use imsl
     implicit none
     real a,abs,b,erra,errest,f,res,errrel
     intrinsic abs
     external f
     ERRA=1.0e-3
     ERRREL=1.0e-2
     a=0.0
     b=3.0

   CALL QDAGS (F, A, B, RES, ERRA,ERRREL, ERREST)

   WRITE (*,*) RES, ERREST
    END      
      
    REAL FUNCTION F (X)
    REAL X      
    
    F = x**2
    RETURN      
    END     
有空再帮忙看下吧?[em2][em2]

4 楼

哪个同学知道的麻烦告诉我下,谢谢了

我来回复

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