-1
私は関数(f(x、y = 5))の積分を計算する関数(Simpson)を持っています。私はこの同じ関数(Simpson)を使って、関数f(x、y)を二重積分したいと思っています:Fortran、プロシージャを複数コピーする方法
F(x)= \ int dy f(x、y) I = \ int dx F (x)
私はFortranで同じ関数を2回(Simpson)呼び出すことができますか? 私が下に置いた例でこれをどうやってしますか? 私の質問の主なアイデアはすでにここに書かれていると思いますが、私は答えを見つけませんでした。 fortran, how to make several copies of a program using module or interface?
Simpson:Simpson1 Simpson2の機能のコピーを外部パッケージを使用することには興味がありません。
ベスト
これは私が使用しているコードの概要である:
MODULE INTEG
IMPLICIT NONE
CONTAINS
REAL FUNCTION SIMPSON(FUNC,A,B,TOL)
REAL, INTENT(IN) :: A, B, TOL
INTERFACE
FUNCTION FUNC (X) RESULT(OUT)
IMPLICIT NONE
REAL, INTEN(IN) :: X
REAL :: OUT
END FUNCTION
END INTERFACE
........
END FUNCTION SIMPSON
END MODULE INTEG
MODULE DOING
USE INTEG
REAL :: TEMP
IMPLICIT NONE
CONTAINS
REAL FUNCTION FUNC (X,Y)
IMPLICIT NONE
REAL, INTENT(IN) :: X, Y
REAL :: OUT
FUNC = X*Y
END FUNCTION FUNC
FUNCTION F(Y) RESULT(OUT2)
REAL, INTENT(IN) :: Y
REAL :: A, B, TOL,OUT2
TEMP = Y
OUT2 = SIMPSON(I1, A, B, TOL)
CONTAINS
REAL FUNCTION I1(X) RESULT(OUT)
REAL, INTENT(IN) :: X
OUT = FUNC (X,TEMP)
END FUNCTION I1
END FUNCTION F
REAL FUNCTION I2(A2, B2, TOL2)
REAL, INTENT(IN) :: A2, B2, TOL2
I2 = SIMPSON(F, A2, B2,TOL)
END FUNCTION I2
END MODULE DOING
PROGRAM EXAMPLE
USE DOING
IMIPLICIT NONE
REAL :: A2, B2, TOL2, OUT3
OUT3 = I2(A2, B2, TOL2)
END PROGRAM EXAMPLE
特定のバージョンのFortran Standardに固有の質問がない限り、generic [tag:fortran]タグを使用してください。 –
あなたが何を求めているのか分かりません。関数を何度も呼び出すことができます。問題を明確にしてください。何か試しましたか?何かエラーがありましたか? –