Sunteți pe pagina 1din 6

02-08-2017

Subject: Fortran Code for Numerical Integration: Part-4

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.

The above could be converted into MATLAB or any other code.

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

Applied research series


Based on Simpson formula:
- double integration 9 functions
- triple integration 27 do-
- 4th order integration 81 do-
- 5th order integration 243 do-
- 6th order integration 729 do-
- 7th order integration 2187 do-
- 8th order integration 6561 do-

Codes are in Fortran-77. Tested up to 7th integration.


Now, MATLAB codes are also available.

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

S-ar putea să vă placă și