spmak matlab,Differentiate function

fnder

Differentiate function

Description

dorder-th derivative of the function in

f. The default value of dorder is 1.

For negative dorder, the particular

|dorder|-th indefinite integral is returned that vanishes

|dorder|-fold at the left endpoint of the basic

interval.

The output is of the same form as the input, they are either both ppforms, or

both B-forms, or both stforms.

If the function in f is m-variate, then

dorder must be given, and must be of length

m.

Also:

If f is in ppform, or in B-form with its last

knot of sufficiently high multiplicity, then, up to rounding errors,

f and fnder(fnint(f)) are

the same.

If f is in ppform and fa is

the value of the function in f at the left end of

its basic interval, then, up to rounding errors,

f and fnint(fnder(f),fa)

are the same, unless the function described by f

has jump discontinuities.

If f contains the B-form of

f, and

t1 is its leftmost

knot, then, up to rounding errors,

fnint(fnder(f)) contains the B-form of

f –

f(t1).

However, its leftmost knot will have lost one multiplicity (if it

had multiplicity > 1 to begin with). Also, its rightmost knot

will have full multiplicity even if the rightmost knot for the

B-form of f in f doesn't. To

verify this, create a spline, sp = spmak([0 0 1],

1). This spline is, on its basic interval

[0..1], the straight line

that is 1 at 0 and 0 at 1. Now integrate its derivative:

spdi = fnint(fnder(sp)). The spline in

spdi has the same basic interval, but, on

that interval, it agrees with the straight line that is 0 at 0 and

–1 at 1.

fnder(f) is the same as

fnder(f,1).

Examples

B-splines with Simple Knots and Their Derivatives

This example shows how to calculate the first and second order derivative functions of three B-splines of order 2, 3, and 4. Then it plots the splines, and their derivatives, and compares the results.

% 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

b676dffbe1a573a2edf8888f9788967e.png

Input Arguments

f — Spline function

spline structure

Spline in either ppform, B-form or stform, specified as a structure

with these fields:

Form — Form of spline

pp | B- | tp00

Form of the spline, returned as pp,

B-, or tp00.

pp indicates that the spline is given

in piecewise polynomial form, B-

indicates that the spline is given in B-form, and

tp00 indicates that the spline is

given in stform.

Knots — Knot locations of spline

vector | cell array

Knot positions of the spline, returned as a vector or as a

cell array of vectors for multivariate data. Vectors contain

strictly increasing elements that represent the start and

end of each of the intervals over which the polynomial

pieces are defined.

Coefs — Coefficients of polynomials

matrix | array

Coefficients of polynomials for each piece, returned as a

matrix or as an array for multivariate data.

Number — Number of polynomial pieces

scalar | vector

Number of polynomial pieces describing the spline,

returned as a scalar or as a vector of numbers of pieces in

each variable for multivariate data.

Order — Order of polynomials

scalar | vector

Order of the polynomial function describing each

polynomial piece of the spline, returned as a scalar or as a

vector containing the order in each variable for

multivariate data.

Dim — Dimensionality

scalar

Dimensionality of the target function, returned as a

scalar.

dorder — Derivative order

scalar | vector

Order of the derivative of the function f,

specified as a scalar or vector for multivariate functions.

Data Types:single | double

Output Arguments

fprime — Derivative function

spline structure

Derivative function of the f spline in either

ppform, B-form, or stform, returned as a structure with these

fields:

Form — Form of spline

pp | B- | tp00

Form of the spline, returned as pp,

B-, or tp00. The

form of the derivative function is the same as the form of

the f function. pp

indicates that the spline is given in piecewise polynomial

form, B- indicates that the spline is

given in B-form, and tp00 indicates that

the spline is given in stform.

Knots — Knot locations of spline

vector | cell array

Knot positions of the spline, returned as a vector or as a

cell array of vectors for multivariate data. Vectors contain

strictly increasing elements that represent the start and

end of each of the intervals over which the polynomial

pieces are defined.

Coefs — Coefficients of polynomials

matrix | array

Coefficients of polynomials for each piece, returned as a

matrix or as an array for multivariate data.

Number — Number of polynomial pieces

scalar | vector

Number of polynomial pieces describing the spline,

returned as a scalar or as a vector of numbers of pieces in

each variable for multivariate data.

Order — Order of polynomials

scalar | vector

Order of the polynomial function describing each

polynomial piece of the spline, returned as a scalar or as a

vector containing the order in each variable for

multivariate data.

Dim — Dimensionality

scalar

Dimensionality of the target function, returned as a

scalar.

Limitations

The fnder function does not work with rational

splines. To work with rational splines, use the fntlr function

instead.

The fnder function works for stforms only in a

limited way: if the type is tp00, then

dorder can be [1,0] or

[0,1].

Algorithms

For differentiation of either polynomial form, the fnder

function finds the derivatives in the piecewise-polynomial sense. The function

differentiates each polynomial piece separately, and ignores jump discontinuities

between polynomial pieces during differentiation.

For the B-form, the function uses the [PGS; (X.10)] formulas

for differentiation.

For the stform, differentiation relies on knowing a formula for the relevant

derivative of the basis function of the particular type.

Introduced before R2006a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值