Fortran Coder

标题: 辛普森积分出现错误,error #6637 [打印本页]

作者: lumlngz    时间: 2024-10-9 10:41
标题: 辛普森积分出现错误,error #6637
本帖最后由 lumlngz 于 2024-10-9 10:53 编辑

[Fortran] 纯文本查看 复制代码
external f
    double precision fc,a,b,s
    a=0.0
    b=1.0
    eps=0.000001
    call simp(a,b,fc,eps,s)
    write(*, '(1x, "s=", d15.6)')s
    end
    function fc(x)
    double precision fc,x
    fc=log(1.0d0+x)/(1.0d0+x*x)
    return
    end
   
    subroutine simp(a,b,fc,eps,t)
    double precision a,b,fc,t,h,t1,s1,p,x,t2,s2
      
      n=1
      h=b-a
      t1=h*(fc(a)+fc(b))/2.0d0
      s1=t1
10    p=0.0d0
      do  20 k=0,n-1
          x=a+(k+0.5d0)*h
          p=p+fc(x)
20    continue
      t2=(t1+h*p)/2.0d0
      s2=(4.0d0*t2-t1)/3.0d0
      if (abs(s2-s1) .ge. eps)then
          t1=t2
          n=n+n
          h=h/2.0d0
          s1=s2
          goto 10
      endif
      t=s2
      return
    end

作者: lumlngz    时间: 2024-10-9 10:43
这一段代码是按照教科书上一步一步写下来的但是运行时出错了
error #6637: When a dummy argument is a function, the corresponding actual argument must also be a function.   [FC]
应该怎么解决呢
作者: 胡文刚    时间: 2024-10-9 12:13
external f
改为
external fc




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2