Documente Academic
Documente Profesional
Documente Cultură
Dear Sir/Madam,
I am appending an article Fortran Code for Numerical Integration. It is based on the Simpsons
formula. It is an open source code developed by me.
As a sample, I am sending a PDF file for 4-dimension Integral. I have developed codes up to 8th
integration. Please refer number of functions. Codes have been successively run up to 7th order.
The execution completes in few seconds and accuracy of results has been excellent. Necessary
conditions can be inserted in the program according to function.
Interested parties may send me a request for commercial dealings for 3rd to 8th order integration.
Thanks,
N.T.Dadlani
nanak.dadlani@gmail.com
Fortran codes for Numerical Integration
Edition-2, 2017
N. T. Dadlani
nanak.dadlani@gmail.com
30-08-2016, r1
INTEG4 (02-08-2017)
C INTEG4.FOR
C Ref:- Numerical methods in Fortran
C J.M.McCormick and M.G.Salvadori
C Program no.9.9a/Page 316
C Theory on page 121
C
C Fourth order INTEGRAL: 17-04-2016
C N=4...order of integration., SUMM(K)
C Modify write, read, print statement.
C
DIMENSION SUMM(30)
C
C WRITE(*,*)'NUMX,NUMY,NUMZ,NUMW, XA ,XB ,YA , YB, ZA ,ZB ,WA ,WB'
C WRITE(*,*)' 1 , 1 , 1 , 1 , 0 ,1 , 0 , 2, 0 , 3 ,0 ,1.57'
C WRITE(*,*)
C WRITE(*,*)
C1 READ (*,*) NUMX,NUMY,NUMZ,NUMW,XA,XB,YA,YB,ZA,ZB,WA,WB
C ..EX-4
NUMX=1
NUMY=1
NUMZ=1
NUMW=1
XA=0.
XB=1.
YA=0.
YB=1.
ZA=0.
ZB=1.
WA=0.
WB=1.
C
WRITE(*,*)
PRINT 998, NUMX,NUMY,NUMZ,NUMW,XA,XB,YA,YB,ZA,ZB,WA,WB
C change K = 1 to 16 for more accurate results.
C Add NUMMV,NUMMU,..ADD VSTRIP, USTRIP,..VH, UH,..
C
PIE=3.142
C
DO 200 K=1,4
C
NUMMX=NUMX*K
NUMMY=NUMY*K
NUMMZ=NUMZ*K
NUMMW=NUMW*K
C
XSTRIP=2.*NUMMX
YSTRIP=2.*NUMMY
ZSTRIP=2.*NUMMZ
WSTRIP=2.*NUMMW
C
XH=(XB-XA)/XSTRIP
YH=(YB-YA)/YSTRIP
ZH=(ZB-ZA)/ZSTRIP
WH=(WB-WA)/WSTRIP
C
SUM=0.0
C
X1=XA
X2=X1+XH
X3=X2+XH
C
DO 100 I=1,NUMMX
Y1=YA
Y2=Y1+YH
Y3=Y2+YH
C
DO 90 M=1,NUMMY
Z1=ZA
Z2=Z1+ZH
Z3=Z2+ZH
Page 1
INTEG4 (02-08-2017)
C
DO 80 MM=1,NUMMZ
W1=WA
W2=W1+WH
W3=W2+WH
C
C ADD V1,V2,V3; U1,U2,U3;...FOR N>4
C
C
DO 70 J=1,NUMMW
C
F1=F(X1,Y1,Z1,W1)
F2=F(X2,Y1,Z1,W1)
F3=F(X3,Y1,Z1,W1)
C
F4 =F(X1,Y2,Z1,W1)
F5 =F(X2,Y2,Z1,W1)
F6 =F(X3,Y2,Z1,W1)
F7 =F(X1,Y3,Z1,W1)
F8 =F(X2,Y3,Z1,W1)
F9 =F(X3,Y3,Z1,W1)
C
F10=F(X1,Y1,Z2,W1)
F11=F(X2,Y1,Z2,W1)
F12=F(X3,Y1,Z2,W1)
F13=F(X1,Y2,Z2,W1)
F14=F(X2,Y2,Z2,W1)
F15=F(X3,Y2,Z2,W1)
F16=F(X1,Y3,Z2,W1)
F17=F(X2,Y3,Z2,W1)
F18=F(X3,Y3,Z2,W1)
C
F19=F(X1,Y1,Z3,W1)
F20=F(X2,Y1,Z3,W1)
F21=F(X3,Y1,Z3,W1)
F22=F(X1,Y2,Z3,W1)
F23=F(X2,Y2,Z3,W1)
F24=F(X3,Y2,Z3,W1)
F25=F(X1,Y3,Z3,W1)
F26=F(X2,Y3,Z3,W1)
F27=F(X3,Y3,Z3,W1)
C
F28=F(X1,Y1,Z1,W2)
F29=F(X2,Y1,Z1,W2)
F30=F(X3,Y1,Z1,W2)
F31=F(X1,Y2,Z1,W2)
F32=F(X2,Y2,Z1,W2)
F33=F(X3,Y2,Z1,W2)
F34=F(X1,Y3,Z1,W2)
F35=F(X2,Y3,Z1,W2)
F36=F(X3,Y3,Z1,W2)
C
F37=F(X1,Y1,Z2,W2)
F38=F(X2,Y1,Z2,W2)
F39=F(X3,Y1,Z2,W2)
F40=F(X1,Y2,Z2,W2)
F41=F(X2,Y2,Z2,W2)
F42=F(X3,Y2,Z2,W2)
F43=F(X1,Y3,Z2,W2)
F44=F(X2,Y3,Z2,W2)
F45=F(X3,Y3,Z2,W2)
C
F46=F(X1,Y1,Z3,W2)
F47=F(X2,Y1,Z3,W2)
F48=F(X3,Y1,Z3,W2)
F49=F(X1,Y2,Z3,W2)
F50=F(X2,Y2,Z3,W2)
F51=F(X3,Y2,Z3,W2)
F52=F(X1,Y3,Z3,W2)
F53=F(X2,Y3,Z3,W2)
Page 2
INTEG4 (02-08-2017)
F54=F(X3,Y3,Z3,W2)
C
F55=F(X1,Y1,Z1,W3)
F56=F(X2,Y1,Z1,W3)
F57=F(X3,Y1,Z1,W3)
F58=F(X1,Y2,Z1,W3)
F59=F(X2,Y2,Z1,W3)
F60=F(X3,Y2,Z1,W3)
F61=F(X1,Y3,Z1,W3)
F62=F(X2,Y3,Z1,W3)
F63=F(X3,Y3,Z1,W3)
C
F64=F(X1,Y1,Z2,W3)
F65=F(X2,Y1,Z2,W3)
F66=F(X3,Y1,Z2,W3)
F67=F(X1,Y2,Z2,W3)
F68=F(X2,Y2,Z2,W3)
F69=F(X3,Y2,Z2,W3)
F70=F(X1,Y3,Z2,W3)
F71=F(X2,Y3,Z2,W3)
F72=F(X3,Y3,Z2,W3)
C
F73=F(X1,Y1,Z3,W3)
F74=F(X2,Y1,Z3,W3)
F75=F(X3,Y1,Z3,W3)
F76=F(X1,Y2,Z3,W3)
F77=F(X2,Y2,Z3,W3)
F78=F(X3,Y2,Z3,W3)
F79=F(X1,Y3,Z3,W3)
F80=F(X2,Y3,Z3,W3)
F81=F(X3,Y3,Z3,W3)
C
C
FF1=(F1+F3+F7+F9+F19+F21+F25+F27)+(F55+F57+F61+F63+F73+F75+
1 F79+F81)
FF2=(F2+F4+F6+F8+F10+F12+F16+F18+F20+F22+F24+F26)+(F28+F30+
1 F34+F36+F46+F48+F52+F54+F56+F58+F60+F62+F64+F66+F70+
1 F72+F74+F76+F78+F80)
FF3=(F5+F11+F13+F15+F17+F23)+(F29+F31+F33+F35+F37+F39+F43+
1 F45+F47+F49+F51+F53+F59+F65+F67+F69+F71+F77)
FF4=(F14)+(F32+F38+F40+F42+F44+F50+F68)
FF5= F41
C
SUM=SUM+(XH*YH*ZH*WH/81.)*(FF1 +4.*FF2 +16.*FF3 +64.*FF4+256.*FF5)
C 27*3 MATRIX
W1=W3
W2=W1+WH
70 W3=W2+WH
C
Z1=Z3
Z2=Z1+ZH
80 Z3=Z2+ZH
C
Y1=Y3
Y2=Y1+YH
90 Y3=Y2+YH
C
X1=X3
X2=X1+XH
100 X3=X2+XH
C
PRINT 997,K,XH,YH,ZH,WH,SUM
C
C
200 SUMM(K)=SUM
C
CC INTRODUCE STATEMENT "GO TO 1" TO SEE VARIOUS OUTPUTS BY
C CHANGING INPUT VALUES
C
C GO TO 1
Page 3
INTEG4 (02-08-2017)
C
997 FORMAT (I18,4F10.5,E17.7)
998 FORMAT (//23X,26HRESULTS FROM PROGRAM 9.9A
$ //25X,21HLIMITS OF INTEGRATION
$ / 16X,7HNUMX = ,I4,4X,7HNUMY = ,I4,4X,7HNUMZ = ,I4,
$ 4X,7HNUMW = ,I4
$ /16X,5HXA = ,E14.7,4X,5HXB = ,E14.7 / 16X,5HYA = ,E14.7,
$ 4X,5HYB = ,E14.7 / 16X,5HZA = ,E14.7,4X,5HZB = ,E14.7
$ /16X,5HWA = ,E14.7,16X,5HWB = ,E14.7
$ //17X,1HK,6X,2HXH,8X,2HYH,8X,2HZH,8X,2HWH,8X,8HINTEGRAL)
C
C
C
END
C
C EX-1
C FUNCTION F(X,Y,Z,W)
C F=EXP(X*Y*Z*W)
C RETURN
C END
C
C LIMITS XA=0,XB=1
C YA=0,YB=1
C ZA=0,ZB=1
C WA=0,WB=1
C NUMX=1,NUMY=1,NUMZ=1,NUMW=1
C I=1.06939 ..MATHCAD (I=1.06939) OK
C
C EX-2
C FUNCTION F(X,Y,Z,W)
C F=EXP(X+Y+Z+W)
C RETURN
C END
C
C LIMITS: XA=0.0,XB=1.
C YA=0.0,YB=1.
C ZA=0.0,ZB=1.
C WA=0.0,WB=1.
C NUMX=1,NUMY=1,NUMZ=1,NUMW=1
C I=8.714 ...MATHCAD (I=8.717) OK
C EX-3
C FUNCTION F(X,Y,Z,W)
C F=(X**2+Y**3+Z**4)*SIN(2.*W)
C RETURN
C END
C LIMITS: XA=0.0,XB=1.
C YA=0.0,YB=2.
C ZA=0.0,ZB=3.
C WA=0.0,WB=1.57 (PIE/2.)
C NUMX=1,NUMY=1,NUMZ=1,NUMW=1
C I=111.2 ...MATHCAD (I=111.23) OK
C
C EX-4
FUNCTION F(X,Y,Z,W)
F=(X+Y+Z+W)**2
RETURN
END
C LIMITS: XA=0.0,XB=1.
C YA=0.0,YB=1.
C ZA=0.0,ZB=1.
C WA=0.0,WB=1.
C NUMX=1,NUMY=1,NUMZ=1,NUMW=1
C I=4.333 ...MATHCAD (I=4.333,K=4) OK
Page 4