6 subroutine minf_nm(id,rd,n,x,maxit,eps)
9 integer,
intent(in) :: id(*)
10 real(8),
intent(in) :: rd(*)
11 integer,
intent(in) :: n
12 real(8),
intent(inout) :: x(n,n+1)
13 integer,
intent(in) :: maxit
14 real(8),
intent(in) :: eps
18 real(8),
parameter :: alpha=1.d0,gamma=2.d0
19 real(8),
parameter :: beta=0.5d0,sigma=0.5d0
22 real(8) f(n+1),xm(n),xr(n),xe(n),xc(n)
24 real(8),
external :: fmin_nm
27 write(*,
'("Error(minf_nm): n < 1 : ",I0)') n
33 f(i)=fmin_nm(id,rd,x(:,i))
41 if ((f(iu)-f(il)) < eps)
return 44 sm=sum(x(i,1:iu-1))+sum(x(i,iu+1:n+1))
47 xr(1:n)=xm(1:n)+alpha*(xm(1:n)-x(1:n,iu))
55 xc(1:n)=xm(1:n)+beta*(x(1:n,iu)-xm(1:n))
65 x(1:n,j)=x(1:n,il)+sigma*(x(1:n,j)-x(1:n,il))
66 f(j)=fmin_nm(id,rd,x(1,j))
71 xe(1:n)=xm(1:n)+gamma*(xr(1:n)-xm(1:n))
subroutine minf_nm(id, rd, n, x, maxit, eps)