fndir
Derivada direccional de una función
Sintaxis
df = fndir(f,y)
Descripción
df = fndir(f,y)
es el formato ppform de la derivada direccional de la función f en f
, en la dirección del vector (columna) y
. Esto significa que df
describe la función .
Si y
es una matriz con n
columnas y f tiene el valor d
, la función de df
tiene el valor prod(d)*n
. Su valor en x, transformado para que tenga el tamaño [d,n]
, en su columna número j, cuenta con la derivada direccional de f en x en la dirección de la columna número j de y
. Si prefiere df
para reflejar explícitamente el tamaño real de f, utilice en su lugar
df = fnchg( fndir(f,y), 'dim',[fnbrk(f,'dim'),size(y,2)] );
Puesto que fndir
se basa en el formato ppform de la función en f
, no funciona para funciones racionales ni para funciones en el formato stform.
Ejemplos
Por ejemplo, si f
describe una función con valor de vector d
m
-variada y x
es un punto en su dominio, por ejemplo, con su formato particular ppform f
que describe un polinomio bilineal escalar,
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)
es la matriz jacobiana de esa función en ese punto (que, para esta función particular con valor escalar, es su gradiente y es cero en el origen).
Como ejemplo relacionado, las siguientes declaraciones representan los gradientes de (una buena aproximación a) la función Franke en una malla regular:
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,:,:)))
A continuación se muestra la gráfica resultante.
Algoritmos
La función en f
se convierte al formato ppform y se calcula la derivada direccional de sus piezas polinómicas formalmente y en una sola operación vectorial, y se vuelven a unir para obtener el formato ppform de la derivada direccional de la función en f
.