主要内容

构造并使用ppform

此示例显示如何使用曲线拟合工具箱™中的样条曲线的PPForm构造和工作。

介绍

(单变量)分段多项式,或PP.简而言之,其特征在于它打破序列休息说,及其系数阵列COEFS.说,其多项式件的局部动力形式。假设断裂序列严格增加,

休息(1)<中断(2)<... <中断(L + 1),

L.构成pp的多项式块的数量。在下图中,休息是[0,1,4,6],因此L.是3。

虽然这些多项式可能具有不同程度的,但它们都被记录为相同的多项式命令K.,即系数阵列COEFS.是尺寸[L,K], 和Coefs(J,:)包含这一点K.局部电力形式的系数j-th多项式件。

这里是由三个二次多项式组成的PP的示例,即,L.=K.= 3.中断以红色标记。

sp = spmak([01 4 4 6],[2 -1]);pp = fn2fm(sp,'pp');breaks = fnbrk(pp,'B');coofs = fnbrk(pp,'C');COEFS(3,[1 2])= [0 1];pp = ppmak(休息,cofs,1);fnplt(pp,[断裂(1)-1 break(2)],'G',1.8)持有fnplt(pp,breaks([2 3]),'B',1.8)Fnplt(PP,[断裂(3),断裂(4)+1],'M',1.8)LP1 =长度(断裂);xb = repmat(休息,3,1);Yb = Repmat([2; 2.2; NaN],1,LP1);绘图(XB(:),YB(:),'r')轴([ -  1 7 -2.5 2.3])持有离开

PP在断裂序列方面的精确描述休息和系数阵列COEFS.

pp(t)= polyval(cofs(j,:),t-breaks(j))
断裂(j)<= t 
            

在哪里,回忆,

PolyVal(A,X)= A(1)* x ^(k-1)+ a(2)* x ^(k-2)+ ... + a(k)* x ^ 0。

对于上图中的PP,休息(1)是0,和Coefs(1,:)是[-1/2 0 0],而休息(3)是4,和Coefs(3,:)是[0 1 -1]。为了T.不是[休息(1)..中断(L + 1)]pp(t)通过延伸第一或上一多项式件来定义。

PP通常通过插值或近似的过程构建。但是,使用命令也可以从划痕中取出ppformPPMAK.。例如,可以获得上述PP为

断裂= [0 1 4 6];cofs = [1/2 0 0 -1 / 2 1 1 1/2 0 1 -1];fn = ppmak(休息,cofs)
FN =带有字段的结构:形式:'PP'中断:[0 1 4 6] COEFS:[3x3双]碎片:3级:3次:1

这回报率FN.,在所谓的PPFFOR中完整描述该PP功能。

曲线拟合工具箱中的各种命令可以在此表单上运行。其余部分显示了一些示例。

在分段多项式上运行

要评估PP,请使用fnval.命令。

fnval(fn,-1:7)
ANS =列1到7 0.5000 0 0.5000 1.0000 0.5000 -1.0000 0列8到9 1.0000 2.0000

要区分PP,请使用f命令。

dfn = fnder(fn);抓住fnplt(dfn,'跳跃''是',3)持有离开h1 = findobj(gca,'颜色''是');传奇(H1,{'第一个衍生'},'地点''SW'

请注意,示例PP的导数在1处是连续的,但在4中不连续。还请注意,默认情况下,fnplt.绘制一个ppform基本间隔,即,在间隔内[休息(1)..休息(结束)]

你也可以使用f采取PP的第二个衍生物。

ddfn = fnder(fn,2);抓住fnplt(ddfn,'j''K',1.6)持有离开h2 = findobj(gca,'颜色''K');传奇([H1 H2],{'第一个衍生''第二个衍生物'},'地点''SW'

第二衍生物是分段常数。

注意差异化通过f为每个多项式件分开完成。例如,尽管第一个衍生物在4上具有跳跃不连续性,但是第二衍生物在那里不是无限的。当我们整合第二衍生物时,这会产生后果。

要集成PP,请使用Fnint.命令。

iddfn = fnint(ddfn);抓住fnplt(iddfn,'B',.5)持有离开h3 = findobj(gca,'颜色''B''行宽',.5);传奇([H1 H2 H3],{'第一个衍生''第二个衍生物'......“第二衍生物的积分”},'地点''SW'

注意,除了任何PP功能的整体是连续的,除了跳过的跳跃之外,第二导数的集成确实恢复了第一导数,除了不能恢复的4。

您可以借助命令获取零件FNBRK.。例如

breaks = fnbrk(fn,'休息'
休息= 0 1 4 6

恢复pp的断裂序列FN., 尽管

转换器2 = fnbrk(fn,2);

如该曲线证实,恢复第二多项式件。

fnplt(pp,[断裂(1)-1 break(2)],'G',1.8)持有fnplt(ode2,'B',2.5,断裂([2 3])+ [ -  1 .5])Fnplt(pp,[断裂(3),断裂(4)+1],'M',1.8)绘图(XB(:),YB(:),'r') 标题('提供第二多项式件的多项式') 抓住离开轴([ -  1 7 -2.5 2.3])

矢量值分段多项式

PP也可以是矢量值,以描述曲线,在2空间或3空间中。在这种情况下,每个局部多项式系数是向量而不是数字,但没有其他关于PPFFOM的变化。有一个额外的ppform部分以记录这个,方面它的目标。

例如,这里是描述单位广场的2矢量值PP,因为其绘图显示。它是一个2D曲线,因此其尺寸为2。

方形= PPMAK(0:4,[1 0 0 1 -1 1 0 0; 0 0 1 0 0 1 -1 1]);fnplt(方形,'r',2)轴([ - 。5 1.5 -.5 1.5])轴平等的标题('描述广场的矢量值PP'

多变量分段多项式

曲线配件工具箱中的PP也可以多变量,即单变量PP功能的张量产品。这种多变量PP的PPFFOR仅稍微复杂,有休息现在,包含每个变量的中断序列的单元格数组,以及COEFS.现在是一个多维数组。从头开始弥补非随机这样的功能更难,因此我们不会尝试在此处,特别是由于工具箱意图帮助从关于它们的某些条件构建PP功能。例如,该图中的球体是借助于csape.

x = 0:4;y = -2:2;S2 = 1 / SQRT(2);v =零(3,7,5);v(3,:,:) = [0 1 S2 0 -S2 -1 0]。'* [1 1 1 1 1];v(2,:,:) = [1 0 S2 1 S2 0 -1]。'* [0 1 0 -1 0];v(1,:,:) = [1 0 S2 1 S2 0 -1]。'* [1 0 -1 0 1];sph = csape({x,y},v,{'夹紧''定期'});Fnplt(SPH)轴平等的离开标题('由双方3-载值valued样条描述的球体'

虽然样条的ppffl是有效的评估, 这建造来自某些数据的样条曲通常通过首先确定其更有效地处理B形式,即其表示作为B样条的线性组合。有关更多信息,请参阅用B形式构建和工作