25 lines
640 B
Fortran
25 lines
640 B
Fortran
FUNCTION amotry(p,y,psum,mp,np,ndim,funk,ihi,fac)
|
|
INTEGER ihi,mp,ndim,np,NMAX
|
|
REAL amotry,fac,p(mp,np),psum(np),y(mp),funk
|
|
PARAMETER (NMAX=20)
|
|
EXTERNAL funk
|
|
CU USES funk
|
|
INTEGER j
|
|
REAL fac1,fac2,ytry,ptry(NMAX)
|
|
fac1=(1.-fac)/ndim
|
|
fac2=fac1-fac
|
|
do 11 j=1,ndim
|
|
ptry(j)=psum(j)*fac1-p(ihi,j)*fac2
|
|
11 continue
|
|
ytry=funk(ptry)
|
|
if (ytry.lt.y(ihi)) then
|
|
y(ihi)=ytry
|
|
do 12 j=1,ndim
|
|
psum(j)=psum(j)-p(ihi,j)+ptry(j)
|
|
p(ihi,j)=ptry(j)
|
|
12 continue
|
|
endif
|
|
amotry=ytry
|
|
return
|
|
END
|