fndir

Производная функции по направлению

Синтаксис

df = fndir(f,y)

Описание

df = fndir(f,y) - ppform производной по направлению функции, f в f, в направлении (столбца-) вектора y. Это означает, что df описывает функцию Dyf(x):=limt0(f(x+ty)f(x))/t.

Если y является матрицей, с n столбцы, и f d-значение, затем функция в df является prod(d)*n-значен. Его значение в x, измененное до размера [d,n], имеет в j-м «столбце» производную по направлению f по x в направлении j-го столбца 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.

См. также

| | |