主题:关于数值积分问题
各位老师:
遇到一个积分的问题,程序如下:
就是进行自编函数积分的时候,如果函数不是确定的值,要进行一个关于符号的积分时候,出现困难,想问下老师们如何来解决这个问题。在本例中如果自编函数F(x)中的F=cos(x)*ff(ff若没有进行数值定义,即ff=15)则程序会报错。我想问 哈出错的原因是什么?多谢了
USE MSIMSL
EXTERNAL F
DOUBLE PRECISION F,A,B,T
A=1.0
B=4.0
EPS=0.000001
CALL FFFTS(A,B,F,EPS,T)
WRITE(*,10) T
10 FORMAT(1X,'T=',D15.6)
pause
END
FUNCTION F(X)
DOUBLE PRECISION F,X
parameter(ff=15)
F=COS(X)*ff (若ff没有进行数值定义(即ff=15)该如何进行积分呢?
RETURN
END
SUBROUTINE FFFTS(A,B,F,EPS,T)
DOUBLE PRECISION A,B,F,T,FA,FB,H,T1,S,X
FA=F(A)
FB=F(B)
N=1
H=B-A
T1=H*(FA+FB)/2.0
5 S=0.0
DO 10 K=0,N-1
X=A+(K+0.5)*H
S=S+F(X)
10 CONTINUE
T=(T1+H*S)/2.0
IF (ABS(T1-T).GE.EPS) THEN
T1=T
N=N+N
H=H/2.0
GOTO 5
END IF
RETURN
END
遇到一个积分的问题,程序如下:
就是进行自编函数积分的时候,如果函数不是确定的值,要进行一个关于符号的积分时候,出现困难,想问下老师们如何来解决这个问题。在本例中如果自编函数F(x)中的F=cos(x)*ff(ff若没有进行数值定义,即ff=15)则程序会报错。我想问 哈出错的原因是什么?多谢了
USE MSIMSL
EXTERNAL F
DOUBLE PRECISION F,A,B,T
A=1.0
B=4.0
EPS=0.000001
CALL FFFTS(A,B,F,EPS,T)
WRITE(*,10) T
10 FORMAT(1X,'T=',D15.6)
pause
END
FUNCTION F(X)
DOUBLE PRECISION F,X
parameter(ff=15)
F=COS(X)*ff (若ff没有进行数值定义(即ff=15)该如何进行积分呢?
RETURN
END
SUBROUTINE FFFTS(A,B,F,EPS,T)
DOUBLE PRECISION A,B,F,T,FA,FB,H,T1,S,X
FA=F(A)
FB=F(B)
N=1
H=B-A
T1=H*(FA+FB)/2.0
5 S=0.0
DO 10 K=0,N-1
X=A+(K+0.5)*H
S=S+F(X)
10 CONTINUE
T=(T1+H*S)/2.0
IF (ABS(T1-T).GE.EPS) THEN
T1=T
N=N+N
H=H/2.0
GOTO 5
END IF
RETURN
END