Scilab Function

NDcost - generic external for optim computing gradient using finite differences

### Calling Sequence

  `[f,g,ind]=CDcost(x,ind,fun,varargin)`

### Parameters

- `x` : real vector or matrix
- `ind` : integer parameter (see optim)
- `fun` : Scilab function with calling sequence `F=fun(x,varargin)` varargin may be use to pass parameters `p1,...pn`
- `f` : criterion value at point `x` (see optim)
- `g` : gradient value at point `x` (see optim)

### Description

This function can be used as an external for `optim` to minimize problem where gradient is too complicated to be programmed. only the function `fun` which computes the criterion is required.

This function should be used as follow: `[f,xopt,gopt]=optim(list(CDcost,fun,p1,...pn),x0,...)`

### Examples

       //function to minimize
       function f=rosenbrock(x,varagin)
         p=varargin(1)
         f=1+sum( p*(x(2:$)-x(1:$-1)^2)^2 + (1-x(2:$))^2)
       endfunction

       x0=[1;2;3;4];
       [f,xopt,gopt]=optim(list(NDcost,rosenbrock,200),x0)

### See Also

`optim` `external` `derivative`