Косая производная функции
df = fndir(f,y)
df = fndir(f,y)
ppform косой производной, функционального f в f
, в направлении (столбец-) векторный y
. Это означает, что df
описывает функцию .
Если y
является матрицей со столбцами n
, и f является d
- оцененный, то функцией в df
является prod(d)*n
- оцененный. Его значение в x, измененном, чтобы иметь размер [d,n]
, имеет в его j th “столбец” косая производная f в x в направлении j th столбец y
. Если вы предпочитаете, чтобы df
отразил явным образом фактический размер f, используйте вместо этого
df = fnchg( fndir(f,y), 'dim',[fnbrk(f,'dim'),size(y,2)] );
Поскольку fndir
полагается на ppform функции в f
, это не работает на рациональные функции, ни на функции в stform.
Например, если f
описывает m
- варьируемая величина, d
- со знаком вектор-функции и x
является некоторой точкой в своей области, то, например, с этой конкретной ppform f
, который определяет билинейный многочлен со скалярным знаком,
f = ppmak({0:1,0:1},[1 0;0 1]); x = [0;0]; [d,m] = fnbrk(f,'dim','var'); jacobian = reshape(fnval(fndir(f,eye(m)),x),d,m)
якобиан этой функции в той точке (который, для этой конкретной скалярной функции, ее градиент, и это - нуль в начале координат).
Как связанный пример, следующие операторы строят градиенты (хорошее приближение к) функция Франке в регулярной mesh:
xx = linspace(-.1,1.1,13); yy = linspace(0,1,11); [x,y] = ndgrid(xx,yy); z = franke(x,y); pp2dir = fndir(csapi({xx,yy},z),eye(2)); grads = reshape(fnval(pp2dir,[x(:) y(:)].'),... [2,length(xx),length(yy)]); quiver(x,y,squeeze(grads(1,:,:)),squeeze(grads(2,:,:)))
Вот получившийся график.
Функция в f
преобразована в ppform, и косая производная ее полиномиальных частей вычисляется официально и в одной векторной операции и соединяется снова, чтобы сформировать ppform косой производной функции в f
.