Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
5.5.0 - Русский

Change language to:
English - Français - 日本語 - Português -

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

Справка Scilab >> Дифференциальное счисление, интегрирование > numdiff

numdiff

числовая оценка градиента

Последовательность вызова

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

Аргументы

fun

внешняя функция или подпрограмма, функция Scilab'а или список. См. ниже последовательность вызова, см. также external о подробностях о внешних функциях.

x

вектор, аргумент функции fun.

dx

вектор, шаг конечной разности. Значение по умолчанию равно dx=sqrt(%eps)*(1+1d-3*abs(x)).

g

вектор, оцененный градиент

Описание

Заданная функция 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)

Смотрите также

  • optim — non-linear optimization routine
  • derivative — approximate derivatives of a function. This function is obsolete. Please use the numderivative function instead.
  • external — объект Scilab'а, внешняя функция или подпрограмма
Report an issue
<< inttrap Дифференциальное счисление, интегрирование ode >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Fri Apr 11 14:19:36 CEST 2014