fnder

Дифференцируйте функцию

Описание

пример

fprime = fnder(f,dorder) возвращает dorder- производная th функции в f. Значение по умолчанию dorder 1. Для отрицательного dorder, конкретный |dorder| неопределенный интеграл-th возвращен, который исчезает |dorder| - сворачиваются в левой конечной точке основного интервала.

Выход имеет ту же форму как вход, они - или оба ppforms, или обе B-формы или оба stforms.

Если функция в f m - варьируемая величина, затем dorder должен быть дан и должен быть длины m.

Также:

  • Если f находится в ppform, или в B-форме с ее последним узлом достаточно высокой кратности, затем, до погрешностей округления, f и fnder(fnint(f)) то же самое.

  • Если f находится в ppform и fa значение функции в f в левом конце его основного интервала, затем, до погрешностей округления, f и fnint(fnder(f),fa) то же самое, если функция, описанная f имеет разрывы скачка.

  • Если f содержит B-форму f, и t 1 является своим крайним левым узлом, затем, до погрешностей округления, fnint(fnder(f)) содержит B-форму ff (t 1). Однако его крайний левый узел потеряет одну кратность (если она имела кратность> 1 для начала). Кроме того, его самый правый узел будет иметь полную кратность даже если самый правый узел для B-формы f в f не делает. Чтобы проверить это, создайте сплайн, sp = spmak([0 0 1], 1). Этот сплайн на его основном интервале [0..1], прямая линия, которая является 1 в 0 и 0 в 1. Теперь интегрируйте его производную: spdi = fnint(fnder(sp)). Сплайн в spdi имеет тот же основной интервал, но на том интервале он соглашается с прямой линией, которая является 0 в 0 и –1 в 1.

fnder(f) совпадает с fnder(f,1).

Примеры

свернуть все

В этом примере показано, как вычислить функции производной первого и второго порядка трех B-сплайнов порядка 2, 3, и 4. Затем это строит сплайны и их производные, и сравнивает результаты.

% 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

Входные параметры

свернуть все

Шлицуйте или в ppform, B-форме или в stform в виде структуры с этими полями:

Форма сплайна, возвращенного как ppB-, или tp00. pp указывает, что сплайн дан в форме кусочного полинома, B- указывает, что сплайн дан в B-форме и tp00 указывает, что сплайн дан в stform.

Свяжите положения узлом сплайна, возвращенного как вектор или как массив ячеек векторов для многомерных данных. Векторы содержат строго увеличивающиеся элементы, которые представляют начало и конец каждого из интервалов, на которых заданы полиномиальные части.

Коэффициенты полиномов для каждой части, возвращенной как матрица или как массив для многомерных данных.

Количество полиномиальных частей, описывающих сплайн, возвращенный как скаляр или как вектор из количеств частей в каждой переменной для многомерных данных.

Порядок полиномиальной функции, описывающей каждую полиномиальную часть сплайна, возвращенного как скаляр или как вектор, содержащий порядок в каждой переменной для многомерных данных.

Размерность целевой функции, возвращенной как скаляр.

Порядок производной функционального fВ виде скаляра или вектора для многомерных функций.

Типы данных: single | double

Выходные аргументы

свернуть все

Производная функция f шлицуйте или в ppform, B-форма или stform, возвратилась как структура с этими полями:

Форма сплайна, возвращенного как ppB-, или tp00. Форма производной функции совпадает с формой f функция. pp указывает, что сплайн дан в форме кусочного полинома, B- указывает, что сплайн дан в B-форме и tp00 указывает, что сплайн дан в stform.

Свяжите положения узлом сплайна, возвращенного как вектор или как массив ячеек векторов для многомерных данных. Векторы содержат строго увеличивающиеся элементы, которые представляют начало и конец каждого из интервалов, на которых заданы полиномиальные части.

Коэффициенты полиномов для каждой части, возвращенной как матрица или как массив для многомерных данных.

Количество полиномиальных частей, описывающих сплайн, возвращенный как скаляр или как вектор из количеств частей в каждой переменной для многомерных данных.

Порядок полиномиальной функции, описывающей каждую полиномиальную часть сплайна, возвращенного как скаляр или как вектор, содержащий порядок в каждой переменной для многомерных данных.

Размерность целевой функции, возвращенной как скаляр.

Ограничения

  • fnder функция не работает с рациональными сплайнами. Чтобы работать с рациональными сплайнами, используйте fntlr функцию вместо этого.

  • fnder функция работает на stforms только ограниченным способом: если типом является tp00, затем dorder может быть [1,0] или [0,1].

Алгоритмы

Для дифференцирования любой полиномиальной формы, fnder функция находит производные в смысле кусочного полинома. Функция дифференцирует каждую полиномиальную часть отдельно и игнорирует разрывы скачка между полиномиальными частями во время дифференцирования.

Для B-формы функция использует [PGS; (X.10)] формулы для дифференцирования.

Для stform дифференцирование использует знание формулы для соответствующей производной основной функции конкретного типа.

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

| | |

Представлено до R2006a