Vous êtes sur la page 1sur 2

APPENDIX

PRONY

C
C
C

******
Prony
Curve
Fit
* Written
By:
Scott
A.
*****************************
PARAMETER
PARAMETER
PARAMETER

Source

Code

Listing

READ

READY

******
Hill
*

PRECISION

PERFORM

InData
TO

x(41),xl(41),xu(41)
a(2000),y(2000)
wk(2200)

DIMENSION
DIMENSION
DIMENSION
DIMENSION

rprm(20)
g(1)
iwk(120)
iprm(20)

FUNCTIONS

(a,y, fen, sumt)

info-0
DO

WHILE

(.TRUE.}

CALL

DOT

(in fo, met hod, iprint,


iprint,
ndv,
ncon, x, xl, xu, obJ, minmax,
g, rprm,
iprm, wk, nrwk, iwk, nriwk)

CALL

EVAL

AND

(obJ, x, y, a, sumt,

IF (info.EQ.0}
END
C

REAL

STATISTICAL

OPTIMIZE

In,Out

DIMENSION
DIMENSION
DIMENSION

INITIALIZE

&

r2, sumt,obJ

CHARACTER*f2

DATA

CALL

(converge=0.00001}
(itermax
= 999)
(itercon
- 3)

DOUBLE

IN

INTEGER

WORKSPACE

fen,

r2, ndv)

EXIT

DO

OPTIMIZATION

COMPLETE

--

OUTPUT

RESULTS

FORDOT

10

10 i=1,20
rprm (i) =0.0
iprm (i) -0
CONTINUE

CALL

EVAL

CALL

OutPut

(obJ,

x, y, a, sumt,

fen,

r2, ndv)

DO

rprm(3)
rprm(4)
iprm(3)
iprm(4)
C
C
C

#
IS

OF CONSTRAINTS,
MINIMIZATION

AMT

OF

SUBROUTINE

EVAL

REAL*8
REAL*8
DIMENSION

x (*)

DIMENSION

y (*), a (*)

obJ

VALUES

AND

UPPER/LOWER

BOUNDS

FOR

DESIGN

WRITE
(*,15)
READ
(*,' (A)')
FORMAT
(' Input

In
File:

FORMAT

17

WRITE
(*,17)
READ
(*,*)
ndv
FORMAT('
# of Prony

r2

Output

File:

25

(i),ndv)

(y(i)

fx)*(y(i)

fx)

obJ)/sumt

'\)
**********************************************
C FUNCTION
TO CALCULATE
VALUE
OF PRONY
************************************************

DO

Value

FUNCTION

Value

(array,

x, n)

dv

DIMENSION

20 i-2,ndv,
2
x(i)
= 500.0
x(i+l)
= -3000.0
CONTINUE
2,ndv
0.0
1.0E+25

SERIES

Terms:'\)

REAL*8

obJ

(sumt

REAL*8

'\)

ndv
- 2*ndv
+ 1
x(1)
- 150.0
xl(1)
- 0.0
xu(1)
- 1.0E+25

25 i
xl(i)
xu(i)
CONTINUE

0.0

Out

16

DO

len, r2, n,dv)

RETURN
END

(*,16)
(*,'(A)')
('

100 I = 1,1en
fx = Value (x,a

obJ
CONTINUE

100

20

(obJ, x, y, a, sumt,

CONSTRAINTS

sumt, r2,Value
obJ, fx

iprlnt=0
mlnmax=-i
method=l

WRITE
READ

Type)

OR

nrwk=2200
nrlwk=120
ncon=0

DEFINE
INITIAL
VARIABLES

(19),

****************************************************
C
SUBROUTINE
TO EVALUATE
FUNCTION
AND
****************************************************

DO

15

ndv, r2, iprm

END

converge
converge
Itermax
itercon

DEFINE
# OF DESIGN
VARIABLES,
DOT
OUTPUT
& WHETHER
PROBLEM
MAXIMIZATION.

C.
C

(obJ,x,

array

(*)

"

array(1)

DO

200

200
i - 2,n-I,2
dv - array (i+l)*x
Value
= Value
+ array
CONTINUE

(i)*DEXP

(dv)

END

DO

3O

30 i-3, ndv, 2
xl(i)
- -I.0E+25
xu(i)
- 0.0
CONTINUE

P_E'_k'_D'!NG P,ak_-E B[.,A_.]K NOT


,'k_'_k;_k_,_J._.'.. , _,,..,

FILIWED

13

C****************************************

613

C SUBROUTINE
TO GET
DATA
FROM
INPUT
*****************************************
SUBROUTINE

InData(a,y,

REAL*8
CHARACTER*f2

mean,
In

len,

FILE

FORMAT(/5X,'Prony
Equation
'Bxe^(',Al,'t)
')

sumt)

630
640

sumt

a (*5 ,Y (*5
RETURN
END

Io = 0
fen - 0
sum = 0.0
sumt
- 0.0
OPEN(I,FILE-In,

STATUS-'OLD'5

500

500 i - I, 1000
READ(1,*,END=5105
CONTINUE

510

CLOSE(1,STATUS='KEEP')

DO

520

fen

DO

520

sum

mean

sum/fen

=
530

sumt
CONTINUE

a(1),y(1)

sum
CONTINUE

DO
530

1,1en
+

y(i)

1,1en
sumt

(y(i)

mean)

* (y (i)

mean5

RETURN
END

*****************************************
C SUBROUTINE
TO SEND
DATA
TO OUTPUT
*****************************************
SUBROUTINE

OutPut(obJ,x,

REAL*8
CHARACTER*f2

(2,FILE-Out,STATUS='UNKNOWN'5

0
(2,610}
(2,611)

WRITE

(2,612)

WRITE(2,6205

600

600 i
k=k+l

WRITE
CONTINUE
WRITE(2,640)

610
611
612

14

r2,iter)

x(*)

WRITE
WRITE

DO

FILE

obJ,r2
In,Out

DIMENSION
OPEN

ndv,

CHAR(228),CHAR(231)
In
150.0,500.0,CHAR(231),-1000.0,
CHAR(231),0.0,0.000001
obJ,x(1)

2, ndv-l,2

(2,630)

',AI,

FORMAT(//5X,'Sum
of the Residuals
Squared:
',

FI4.4//',F14.4//12X,'A:
',F14.6)
FORMAT(10X,'B',I2,':
',FI4.6,15X,AI,I2,':
',F14.65
FORMAT(/5X,'Correlatlon
Coefficient:
',F9.7//
5X,'#
of Iterations:',I3)
CLOSE

DIMENSION

Form:

620

k,x(i),CHAR(231),k,x(i+15

DSQRT(r2),Iter

FORMAT(/5X,'Prony
Equation
Form:
y - A + ',

AI,'Be^(',AI,'t5
,}
FORMAT(/5X,'Input
File:
',AS
FORMAT(//5X,'Initial
Value
for A: ',FI2.4/5X,
'Initial
Value
for B:',Fl2.4/SX,'Initial
Value',
' for
',A,':
',Fl2.4/5X,'Upper
Limit
for ',A,
': ',F12.4
//5X,'Convergence
Criteria:
'
,F12.10)

(2,STATUS='KEEP')

Vous aimerez peut-être aussi