fnder

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

Описание

пример

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

Выход имеет ту же форму, что и вход, они являются либо обеими ppform, либо обеими B-формами, либо обеими stform.

Если функция в f m -variate, тогда 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-форму f - f (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, заданный как структура с этими полями:

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

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

Ограничения

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

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

Алгоритмы

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

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

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

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