1 * Obtained from http
://www
.nag
.com
/local
/nagping
/np006a3
.asp
2 * D02CJF Example
Program Text
3 * Mark
14 Revised
. NAG Copyright
1989.
5 CHARACTER RELABS*15
!NEW
9 PARAMETER (N
=3,IW
=21*N
+28)
10 * .. Scalars in
Common ..
11 DOUBLE PRECISION H
, XEND
14 DOUBLE PRECISION PI
, TOL
, X
17 DOUBLE PRECISION W
(IW
), Y
(N
)
18 * .. External Functions
..
19 DOUBLE PRECISION D02CJW
, G
, X01AAF
20 STDCALL
EXTERNAL D02CJW
, G
, X01AAF
!CHANGE
21 * .. External Subroutines
..
22 STDCALL
EXTERNAL D02CJF
, D02CJX
, FCN
, OUT
!CHANGE
23 * .. Intrinsic Functions
..
27 * .. Executable Statements
..
28 WRITE (NOUT
,*) 'D02CJF Example Program Results'
29 RELABS
= "Default" !NEW
33 WRITE (NOUT
,*) 'Case 1: intermediate output, root-finding'
37 WRITE (NOUT
,99999) ' Calculation with TOL =', TOL
43 H
= (XEND
-X
)/DBLE
(K
+1)
44 WRITE (NOUT
,*) ' X Y(1) Y(2) Y(3)'
47 CALL D02CJF
(X
,XEND
,N
,Y
,FCN
,TOL
,VAL
(LOC
(RELABS
)),VAL
(7),OUT
,G
,W
,!CHANGE
50 WRITE (NOUT
,99998) ' Root of Y(1) = 0.0 at', X
51 WRITE (NOUT
,99997) ' Solution is', (Y
(I
),I
=1,N
)
55 WRITE (NOUT
,*) 'Case 2: no intermediate output, root-finding'
59 WRITE (NOUT
,99999) ' Calculation with TOL =', TOL
66 CALL D02CJF
(X
,XEND
,N
,Y
,FCN
,TOL
,VAL
(LOC
(RELABS
)),VAL
(7),D02CJX
, !CHANGE
69 WRITE (NOUT
,99998) ' Root of Y(1) = 0.0 at', X
70 WRITE (NOUT
,99997) ' Solution is', (Y
(I
),I
=1,N
)
74 WRITE (NOUT
,*) 'Case 3: intermediate output, no root-finding'
78 WRITE (NOUT
,99999) ' Calculation with TOL =', TOL
84 H
= (XEND
-X
)/DBLE
(K
+1)
85 WRITE (NOUT
,*) ' X Y(1) Y(2) Y(3)'
88 CALL D02CJF
(X
,XEND
,N
,Y
,FCN
,TOL
,VAL
(LOC
(RELABS
)),VAL
(7),OUT
, CHANGE
95 +'Case 4: no intermediate output, no root-finding ( integrate to XE
100 WRITE (NOUT
,99999) ' Calculation with TOL =', TOL
105 WRITE (NOUT
,*) ' X Y(1) Y(2) Y(3)'
106 WRITE (NOUT
,99996) X
, (Y
(I
),I
=1,N
)
109 CALL D02CJF
(X
,XEND
,N
,Y
,FCN
,TOL
,VAL
(LOC
(RELABS
)),VAL
(7),D02CJX
, !CHANGE
112 WRITE (NOUT
,99996) X
, (Y
(I
),I
=1,N
)
116 99999 FORMAT (1X
,A
,D8
.1
)
117 99998 FORMAT (1X
,A
,F7
.3
)
118 99997 FORMAT (1X
,A
,3F13
.5
)
119 99996 FORMAT (1X
,F8
.2
,3F13
.5
)
122 STDCALL
SUBROUTINE OUT
(X
,Y
) !CHANGE
128 * .. Scalar Arguments
..
130 * .. Array Arguments
..
131 DOUBLE PRECISION Y
(N
)
132 * .. Scalars in
Common ..
133 DOUBLE PRECISION H
, XEND
135 * .. Local Scalars
..
137 * .. Intrinsic Functions
..
139 * .. Common blocks
..
141 * .. Executable Statements
..
142 WRITE (NOUT
,99999) X
, (Y
(J
),J
=1,N
)
147 99999 FORMAT (1X
,F8
.2
,3F13
.5
)
150 STDCALL
SUBROUTINE FCN
(T
,Y
,F
) !CHANGE
154 * .. Scalar Arguments
..
156 * .. Array Arguments
..
157 DOUBLE PRECISION F
(N
), Y
(N
)
158 * .. Intrinsic Functions
..
160 * .. Executable Statements
..
162 F
(2) = -0.032D0*TAN
(Y
(3))/Y
(2) - 0.02D0*Y
(2)/COS
(Y
(3))
163 F
(3) = -0.032D0
/Y
(2)**2
167 STDCALL
DOUBLE PRECISION FUNCTION G
(T
,Y
) !CHANGE
171 * .. Scalar Arguments
..
173 * .. Array Arguments
..
174 DOUBLE PRECISION Y
(N
)
175 * .. Executable Statements
..