主要内容

Chebyshev样条的构建

这个例子展示了如何使用曲线拟合工具箱™中的命令来构造切比雪夫样条。

Chebyshev(A.K.A. EquiScillating)样条定义

根据定义,对于给定结序列t长度n + kc = c_ {t,k}是独特的元素S_ {t, k}MAX-NOM 1最大地振荡在间隔内[t_k .. t_ {n + 1}]并且在附近是正的t_ {n + 1}.这意味着严格递增是唯一的TAU长度n所以这个函数CS_ {k, t}给出的

c(tau(i))=(-1)^ {n-i},

对所有的上限为1[t_k .. t_ {n + 1}].这意味着

τ(1)= t_k,

τ(n) = t_ {n + 1},识别

然后

T_i < tau(i) < t_{k+i}

对所有.事实上,

T_ {i+1} <= T_ {i+k-1},

对所有.这会带来结序列的点t假设可以使这种不等式成为可能,结果是相当于拥有所有元素S_ {k, t}连续的。

T =奥氏([0 1 1.1 3 5 5.5 7 7.1 7.2 8],4);[tau,c] = chbpnt(t,4);xx = sort([Linspace(0,8,201),Tau]);绘图(xx,fnval(c,xx),“线宽”,2);持有breaks = knt2brk(t);bbb = repmat(休息,3,1);SSS = Repmat([1; -1; NaN],1,长度(断裂));绘图(BBB(:),SSS(:),“r”);持有离开ylim([ -  2 2]);标题('特定结序列的Chebyshev样条曲线');传奇({'chebyshev样条'“节”});

图中包含一个轴对象。具有标题的轴对象特定结序列的Chebyshev样条包含2个类型的型号。这些物体代表Chebyshev样条,结。

简而言之,Chebyshev样条C看起来就像Chebyshev多项式一样。它执行类似的功能。例如,它的极值TAU有特别好的站点来插入吗S_ {k, t}因为投影仪的标准是尽可能的小。

持有情节(τ0(大小(τ)),'k +');持有离开传奇({'chebyshev样条'“节”'极值'});

图中包含一个轴对象。标题为The Chebyshev Spline for a Particular Knot Sequence的轴对象包含3个类型为line的对象。这些对象代表切比雪夫样条,结,极值。

选择花键空间

在这个例子中,我们尝试构建C对于给定的样条空间。

我们处理三次样条与简单的内部结,指定

k = 4;break = [0 1 1.1 3 5 5.5 7 7.1 7.2 8];T = augknt(break, k)
t =1×160000 1.0000 1.1000 3.0000 5.0000 5.5000 7.0000 7.1000 7.2000 8.0000 8.0000 8.0000 8.0000 8.0000 8.0000

从而获得尺寸的样条空间

n =长度(t) - k
n = 12

最初的猜测

因为我们的初步猜测TAU,我们使用结梯级

Tau (i) = (t_{i+1} +…+ t_ {i + k - 1}识别)/ (k - 1)

推荐为良好的插值站点选择,并将结果的第一近似绘制到C

τ= aveknt (t, k)
tau =1×12.0 0.3333 0.7000 1.7000 3.0333 4.5000 5.8333 6.5333 7.1000 7.4333 7.7333 8.0000
B =( - -(1,n))。^(n-1:-1:0);c = spapi(t,tau,b);情节(休息时间(结束[1]),[1],'k',休息([1末]),[ -  1 -1],'k');持有fnplt(c,“r”1);持有离开ylim([ -  2 2]);标题(“等振荡样条的第一次近似”);

图中包含一个轴对象。标题为First Approximation to a equioscillation Spline的轴对象包含3个类型为line的对象。

迭代

对于完整的水准,我们使用雷米兹算法。这意味着我们构建一个新的TAU作为当前近似的极值,c,C并再次尝试。

求这些极值本身就是一个迭代过程,也就是求导数的零点直流我们的近似值c

dc = fnder(c);

我们取控制多边形的0直流作为我们的第一个猜测直流.这个控制多边形有顶点(tstar (i)系数(我)), 在哪里COEFS.是系数直流, 和tstar结的平均水平。

(节、系数、np、kp) = fnbrk(直流,“节”'cofs''n''命令');tstar = aveknt(节、kp);

由于控制多边形是分段线性的,因此其零很容易计算。这是那些零。

NPP = 1:NP-1;猜测= tstar(npp) -  cofs(npp)。*(diff(tstar)./ diff(cofs));fnplt(DC,“r”);持有情节(TSTAR,COEFS,“k。“);绘图(猜测,零(1,NP-1),'o');持有离开标题(“近似的一阶导数”);传奇({'DC'控制多边形的'控制多边形的零'});

图中包含一个轴对象。标题为“近似的一阶导数”的轴对象包含3个类型为line的对象。这些对象代表Dc, Control Polygon, zero of Control Polygon。

这为实际零提供了非常好的第一猜测直流

现在我们评估直流在这两组地点。

网站= [猜测;TAU(2:N-1)];值= fnval(DC,站点);

然后我们使用SECANT方法的两个步骤,获取迭代网站(3:)网站(4,:), 和值(3:)值(4:)对应的值直流

网站(3:4,:)= 0;:值(3:4)= 0;[J, J -1];= diff Dcd计划(值(行,:));论证Dcd计划= = 0)= 1;%靠区别归零站点(j + 1,:) =站点(j,:) - 值(j,:)。*(diff(站点(行(行))./ dcd);值(J + 1,:)= fnval(DC,站点(J + 1,:));结束

我们将最后一次迭代作为计算的零直流,即当前近似的极值,c.这是我们对TAU

tau = [tau(1)站点(4,:) tau(n)]
tau =1×12.0 0.2759 0.9082 1.7437 3.0779 4.5532 5.5823 6.5843 7.0809 7.3448 7.7899 8.0000
情节(休息时间(结束[1]),[1],'k',休息([1末]),[ -  1 -1],'k');持有fnplt(c,“r”1);绘图(猜测,零(1,NP-1),'o');情节(τ(2:n - 1), 0 (1, n),'X');持有离开标题(“等振荡样条的第一次近似”);甘氨胆酸ax =;h = ax.Children;传奇(h ([3 1 2]), {“近似”'极值'...'第一个衍生的控制多边形'的零'});轴([0 8 -2 2]);

图中包含一个轴对象。标题为First Approximation to a equioscillation Spline的轴对象包含5个类型为line的对象。这些对象表示一阶导数控制多边形的近似、零、极值。

第一次迭代步骤结束

我们计算得到的新的近似切比雪夫样条使用新的猜测TAU

τcnew = spapi (t, b);

新的近似是近一个平衡的样条曲线。

情节(休息时间(结束[1]),[1],'k',休息([1末]),[ -  1 -1],'k');持有fnplt(c,“r”1);fnplt(cnew,'k',1);持有离开甘氨胆酸ax =;h = ax.Children;传奇(h (2 [1]), {“第一近似”'更新近似'});轴([0 8 -2 2]);

图中包含一个轴对象。轴对象包含4个类型的4个对象。这些对象代表了第一近似,更新的近似值。

如果这还不够接近,只要再试一次,从这个新的开始TAU.对于这个特定的例子,下一个迭代已经提供了切比雪夫样条的图形精度。

使用Chebyshev-Demko积分

给定样条空间的切比雪夫样条S_ {k, t}以及其极值,可作为可选输出提供chbpnt工具箱中的命令。这些极值是由Steven Demko作为良好的插值地点,因此现在被称为Chebyshev-Demko网站。本节显示了它们使用的示例。

如果您已决定近似于间隔的方源功能[0 .. 1]通过与结序列的立方样条

k = 4;n = 10;t = augknt (((0: n) / n)。^ 8 k);

然后给出了从该特定样条空间的平方根函数的良好近似

tau = chbpnt(t,k);sp = spapi(t,tau,sqrt(tau));

近距离误差的近距离所示。

xx = linspace(0,1,301);绘图(XX,FNVAL(SP,XX)-SQRT(XX));标题({“平方根插值错误”“Chebyshev-Demko地点”。});

图中包含一个轴对象。在Chebyshev-demko站点的interpolatt中的轴对象具有标题错误到Square Root。包含类型线的对象。