Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: Français - Português - 日本語

Please note that the recommended version of Scilab is 6.1.1. This page might be outdated.
However, this page did not exist in the previous stable version.

Scilab manual >> Optimization and Simulation > numdiff

# numdiff

numerical gradient estimation

### Calling Sequence

`g=numdiff(fun,x [,dx])`

### Arguments

fun

an external, Scilab function or list. See below for calling sequence, see also external for details about external functions.

x

vector, the argument of the function `fun`

dx

vector, the finite difference step. Default value is `dx=sqrt(%eps)*(1+1d-3*abs(x))`

g

vector, the estimated gradient

### Description

given a function `fun(x)` from `R^n` to `R^p` computes the matrix `g` such as

`g(i,j) = (df_i)/(dx_j)`

using finite difference methods. Uses an order 1 formula.

Without parameters, the function fun calling sequence is `y=fun(x)`, and numdiff can be called as `g=numdiff(fun,x)`. Else the function fun calling sequence must be `y=fun(x,param_1,pararm_2,..,param_q)`. If parameters `param_1,param_2,..param_q` exist then `numdiff` can be called as follow `g=numdiff(list(fun,param_1,param_2,..param_q),x)`.

See the derivative with respect to numerical accuracy issues and comparison between the two algorithms.

### Examples

```// example 1 (without parameters)
// myfun is a function from R^2 to R :   (x(1),x(2)) |--> myfun(x)
function f=myfun(x)
f=x(1)*x(1)+x(1)*x(2)
endfunction

x=[5 8]
g=numdiff(myfun,x)

// The exact gradient (i.e derivate belong x(1) :first component and derivate belong x(2): second component) is
exact=[2*x(1)+x(2)  x(1)]

//example 2 (with parameters)
// myfun is a function from R to R:  x(1) |--> myfun(x)
// myfun contains 3 parameters, a, b, c
function f=myfun(x, a, b, c)
f=(x+a)^c+b
endfunction

a=3; b=4; c=2;
x=1
g2=numdiff(list(myfun,a,b,c),x)

// The exact gradient, i.e derivate belong x(1), is :
exact2=c*(x+a)^(c-1)```

### Comments

Add a comment:
Please login to comment this page.

 << lsqrsolve Optimization and Simulation optim >>

 Scilab EnterprisesCopyright (c) 2011-2017 (Scilab Enterprises)Copyright (c) 1989-2012 (INRIA)Copyright (c) 1989-2007 (ENPC)with contributors Last updated:Wed Jan 26 16:23:43 CET 2011