这个例子展示了如何使用曲线拟合工具箱™中的命令来构造切比雪夫样条。
根据定义,对于给定结序列t
长度n + k
,c = c_ {t,k}
是独特的元素S_ {t, k}
MAX-NOM 1最大地振荡在间隔内[t_k .. t_ {n + 1}]
并且在附近是正的t_ {n + 1}
.这意味着严格递增是唯一的TAU
长度n
所以这个函数C
在S_ {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样条C
看起来就像Chebyshev多项式一样。它执行类似的功能。例如,它的极值TAU
有特别好的站点来插入吗S_ {k, t}
因为投影仪的标准是尽可能的小。
持有在情节(τ0(大小(τ)),'k +');持有离开传奇({'chebyshev样条'“节”'极值'});
在这个例子中,我们尝试构建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]);标题(“等振荡样条的第一次近似”);
对于完整的水准,我们使用雷米兹算法。这意味着我们构建一个新的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'控制多边形的'控制多边形的零'});
这为实际零提供了非常好的第一猜测直流
.
现在我们评估直流
在这两组地点。
网站= [猜测;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]);
我们计算得到的新的近似切比雪夫样条使用新的猜测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]);
如果这还不够接近,只要再试一次,从这个新的开始TAU
.对于这个特定的例子,下一个迭代已经提供了切比雪夫样条的图形精度。
给定样条空间的切比雪夫样条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地点”。});