числовая оценка градиента
g = numdiff(fun, x) g = numdiff(fun, x, dx)
внешняя функция или подпрограмма, функция Scilab'а или список. См. ниже последовательность вызова, см. также external о подробностях о внешних функциях.
вектор, аргумент функции fun
.
вектор, шаг конечной разности. Значение по умолчанию равно
dx=sqrt(%eps)*(1+1d-3*abs(x))
.
вектор, оцененный градиент
Заданная функция fun(x)
от
R^n
до R^p
вычисляет такую матрицу
g
, что
g(i,j) = (df_i)/(dx_j)
используя методы конечной разницы. Использует формулу порядка 1.
Без параметров функция последовательность вызова fun
y=fun(x)
, и numdiff
может быть вызвана в виде
g=numdiff(fun,x)
. Иначе последовательность вызова fun
должна быть y = fun(x, param_1, pararm_2, ..., param_q)
.
Если параметры param_1, param_2, ..., param_q
существуют, то
numdiff
может быть вызвана следующим образом:
g=numdiff(list(fun, param_1, param_2, ..., param_q), x)
.
См. derivative относительно проблем числовой точности и сравнение между двумя алгоритмами.
// пример 1 (без параметров) // myfun - это функция от R^2 до 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) // Точный градиент (т. е. производная принадлежит x(1): первый элемент // и производная принадлежит x(2): второй элемент) равен exact=[2*x(1)+x(2) x(1)] //пример 2 (с параметрами) // myfun - это функция от R до R: x(1) |--> myfun(x) // myfun содержит 3 параметра: 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) // Точный градиент, то есть производная принадлежит x(1), равен: exact2=c*(x+a)^(c-1) | ![]() | ![]() |
Version | Description |
5.5.0 | Tagged as obsolete. Will be removed in Scilab 6.0.0. |
5.5.2 | numdiff was removed after Scilab 5.5.2.
numderivative replaces it. |