取两个变量的平均函数

时间:2015-08-10 09:42:17

标签: fortran fortran90

所以我有一个函数f(x, y, t),我可以在xyt超过一定的时间间隔进行评估。如果我修复其中一个变量,让我们使用y,该函数将成为xt的函数,让我们调用g(x, t) 。我知道如何在x的间隔内获得平均值,我可以将其绘制为t的函数。

! I use fortran90. assume all variables are valid

foo = 0.0

do i = 1, n
  do j = 1, n
    foo = foo + g(x(j), t(j))
  end do

  write(*,*) t(i), foo/n
end do

其中x(j)是区间内可能x的数组。

我试图对此进行扩展,以便我也可以在y的间隔内取平均值,但我不知道该怎么做。

我用了一个例子;我可以发布实际的代码,但它会让人感到困惑。

1 个答案:

答案 0 :(得分:0)

您基本上有两种选择:

  1. 使用f(x, y, t)并提供(常量)y以及其他变量,或

  2. 编写一个使用常量g(x, t)的包装程序y,设置为编译时或使用全局变量。对于后一种情况,您可以使用诸如

  3. 之类的模块
    module wrapper
    
      implicit none
      integer :: fixedY
    
    contains
    
      function f(x,y,t)
        ! Declarations missing
        ! f = ...
      end function
    
      function g(x,t)
        ! Declarations missing
        g = f(x, fixedY, t)
      end function
    end module
    

    在主程序中,首先需要设置fixedY,然后调用g

    program test
      use wrapper, only: g, fixedY
      implicit none
    
      ! Set fixedY
      fixedY = 2
    
      print *, g(1, 3)
    end program
    

    您仍然需要修改它以获得平均值,例如,使用循环(就像您在代码片段中所做的那样)。