6subroutine minf_nm(id,rd,n,x,maxit,iter,eps)
9integer,
intent(in) :: id(*)
10real(8),
intent(in) :: rd(*)
11integer,
intent(in) :: n
12real(8),
intent(inout) :: x(n,n+1)
13integer,
intent(in) :: maxit
14integer,
intent(out) :: iter
15real(8),
intent(in) :: eps
19real(8),
parameter :: alpha=1.d0,gamma=2.d0
20real(8),
parameter :: beta=0.5d0,sigma=0.5d0
23real(8) f(n+1),xm(n),xr(n),xe(n),xc(n)
25real(8),
external :: fmin_nm
28 write(*,
'("Error(minf_nm): n < 1 : ",I8)') n
39if (iter >= maxit)
return
44 if (f(i) < f(il)) il=i
45 if (f(i) > f(iu)) iu=i
48if ((f(iu)-f(il)) < eps)
return
61xr(:)=xm(:)+alpha*(xm(:)-x(:,iu))
63if (f(il) > fr)
goto 30
64if ((f(il) <= fr).and.(fr < f(iu)))
then
73xe(:)=xm(:)+gamma*(xr(:)-xm(:))
86xc(:)=xm(:)+beta*(x(:,iu)-xm(:))
96 x(:,j)=x(:,il)+sigma*(x(:,j)-x(:,il))
100 x(:,j)=x(:,il)+sigma*(x(:,j)-x(:,il))
subroutine minf_nm(id, rd, n, x, maxit, iter, eps)