Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

fnder

Diferenciar una función

Descripción

ejemplo

fprime = fnder(f,dorder) devuelve la dorder-ésima derivada de la función en f. El valor predeterminado de dorder es 1. En el caso de un valor dorder negativo, se devuelve la |dorder|-ésima integral indefinida en particular que se anula |dorder| veces en el extremo de línea izquierdo del intervalo básico.

La salida es del mismo formato que la entrada; son ambas ppform, ambas B-form o ambas stform.

Si la función en f es m-variada, debe proporcionarse dorder, y debe ser de longitud m.

Asimismo:

  • Si f está en formato ppform o B-form con un último nudo con una multiplicidad lo suficientemente alta, hasta los errores de redondeo, f y fnder(fnint(f)) son iguales.

  • Si f está en formato ppform y fa es el valor de la función en f en el extremo izquierdo de su intervalo básico, hasta los errores de redondeo, f y fnint(fnder(f),fa) son iguales, a menos que la función descrita por f tenga discontinuidades de salto.

  • Si f contiene el B-form de f, y t1 es su nudo más a la izquierda, hasta los errores de redondeo, fnint(fnder(f)) contiene el B-form de ff(t1). Sin embargo, su nudo más a la izquierda habrá perdido una multiplicidad (si tenía multiplicidad > 1 para empezar). Asimismo, su nudo más a la derecha tendrá multiplicidad completa aunque el nudo más a la derecha para el B-form de f en f no la tenga. Para verificar esto, cree un spline, sp = spmak([0 0 1], 1). El spline es, en su intervalo básico [0..1], la línea recta que es 1 en 0 y 0 en 1. Ahora integre su derivada: spdi = fnint(fnder(sp)). El spline en spdi tiene el mismo intervalo básico, pero, en ese intervalo, coincide con la línea recta que es 0 en 0 y –1 en 1.

fnder(f) es igual que fnder(f,1).

Ejemplos

contraer todo

Este ejemplo muestra cómo calcular las funciones derivadas de primer y segundo orden de los tres B-splines de orden 2, 3 y 4. Después, representa los splines y sus derivadas y compara los resultados.

% Create the knots sequences
t1 = [0 .8 2];
t2 = [3 4.4 5  6];
t3 = [7  7.9  9.2 10 11];
tt = [t1 t2 t3];

% Accessory variables and commands for plotting purposes
cl = ['g','r','b','k','k'];
v = 5.4; d1 = 2.5; d2 = 0; s1 = 1; s2 = .5;
ext = tt([1 end])+[-.5 .5];
plot(ext([1 2]),[v v],cl(5))
hold on
plot(ext([1 2]),[d1 d1],cl(5))
plot(ext([1 2]),[d2 d2],cl(5))
ts = [tt;tt;NaN(size(tt))];
ty = repmat(.2*[-1;0;NaN],size(tt));
plot(ts(:),ty(:)+v,cl(5))
plot(ts(:),ty(:)+d1,cl(5))
plot(ts(:),ty(:)+d2,cl(5))

% Spline 1 (linear)
b1 = spmak(t1,1);
p1 = [t1;0 1 0];
% Calculate the first and second derivative of spline 1
db1 = fnder(b1);
p11 = fnplt(db1,'j');
p12 = fnplt(fnder(db1));
lw = 2;
plot(p1(1,:),p1(2,:)+v,cl(2),'LineWidth',lw)
plot(p11(1,:),s1*p11(2,:)+d1,cl(2),'LineWidth',lw)
plot(p12(1,:),s2*p12(2,:)+d2,cl(2),'LineWidth',lw)

% Spline 2 (quadratic)
b1 = spmak(t2,1);
p1 = fnplt(b1);
% Calculate the first and second derivative of spline 2
db1 = fnder(b1);
p11 = [t2;fnval(db1,t2)];
p12 = fnplt(fnder(db1),'j');
plot(p1(1,:),p1(2,:)+v,cl(3),'LineWidth',lw)
plot(p11(1,:),s1*p11(2,:)+d1,cl(3),'LineWidth',lw)
plot(p12(1,:),s2*p12(2,:)+d2,cl(3),'LineWidth',lw)

% Spline 3 (cubic)
b1 = spmak(t3,1);
p1 = fnplt(b1);
% Calculate the first and second derivative of spline 3
db1 = fnder(b1);
p11 = fnplt(db1);
p12=[t3;fnval(fnder(db1),t3)];
plot(p1(1,:),p1(2,:)+v,cl(4),'LineWidth',lw)
plot(p11(1,:),s1*p11(2,:)+d1,cl(4),'LineWidth',lw)
plot(p12(1,:),s2*p12(2,:)+d2,cl(4),'LineWidth',lw)

% Formatting the plot
tey = v+1.5;
text(t1(2)-.5,tey,'linear','FontSize',12,'Color',cl(2))
text(t2(2)-.8,tey,'quadratic','FontSize',12,'Color',cl(3))
text(t3(3)-.5,tey,'cubic','FontSize',12,'Color',cl(4))
text(-2,v,'B','FontSize',12)
text(-2,d1,'DB','FontSize',12)
text(-2,d2,'D^2B')
axis([-1 12 -2 7.5])
title({'B-splines with Simple Knots and Their Derivatives'})
axis off
hold off

Argumentos de entrada

contraer todo

Spline en formato ppform, B-form o stform, especificado como estructura con estos campos:

Forma del spline, devuelta como pp, B- o tp00. pp indica que el spline tiene forma polinómica por tramos, B- indica que el spline tiene B-form y tp00 indica que el spline tiene stform.

Posiciones de los nudos del spline, devueltas como un vector o un arreglo de celdas de vectores en el caso de datos multivariados. Los vectores contienen elementos estrictamente crecientes que representan el inicio y el fin de cada uno de los intervalos en los que se definen los tramos polinómicos.

Coeficientes de los polinomios para cada tramo, devueltos como una matriz o como un arreglo en el caso de datos multivariados.

Número de tramos polinómicos que describen el spline, devuelto como un escalar o como un vector de números de tramos de cada variable en el caso de datos multivariados.

Orden de la función polinómica que describe cada tramo polinómico del spline, devuelta como un escalar o como un vector que contiene el orden de cada variable en el caso de datos multivariados.

Dimensionalidad de la función de destino, devuelta como un escalar.

Orden de la derivada de la función f, especificado como escalar o vector para funciones multivariadas.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Función derivada del spline f en formato ppform, B-form o stform, devuelta como estructura con los siguientes campos:

Forma del spline, devuelta como pp, B- o tp00. La forma de la función derivada es la misma que la forma de la función f. pp indica que el spline tiene forma polinómica por tramos, B- indica que el spline tiene B-form y tp00 indica que el spline tiene stform.

Posiciones de los nudos del spline, devueltas como un vector o un arreglo de celdas de vectores en el caso de datos multivariados. Los vectores contienen elementos estrictamente crecientes que representan el inicio y el fin de cada uno de los intervalos en los que se definen los tramos polinómicos.

Coeficientes de los polinomios para cada tramo, devueltos como una matriz o como un arreglo en el caso de datos multivariados.

Número de tramos polinómicos que describen el spline, devuelto como un escalar o como un vector de números de tramos de cada variable en el caso de datos multivariados.

Orden de la función polinómica que describe cada tramo polinómico del spline, devuelta como un escalar o como un vector que contiene el orden de cada variable en el caso de datos multivariados.

Dimensionalidad de la función de destino, devuelta como un escalar.

Limitaciones

  • La función fnder no funciona con splines racionales. Para trabajar con splines racionales, utilice la función fntlr en su lugar.

  • La función fnder funciona para stform solo de forma limitada: si el tipo es tp00, dorder puede ser [1,0] o [0,1].

Algoritmos

Para la diferenciación de cualquier forma polinómica, la función fnder encuentra las derivadas en el sentido polinómico por tramos. La función diferencia cada tramo polinómico de forma independiente e ignora las discontinuidades de salto entre tramos polinómicos durante la diferenciación.

Para el B-form, la función utiliza la fórmula [PGS; (X.10)] para la diferenciación.

Para el stform, la diferenciación se basa en que conoce una fórmula para la derivada relevante de la función base del tipo en particular.

Historial de versiones

Introducido antes de R2006a