此示例显示如何使用该示例选择和优化结optknt.
和纽knt.
曲线配件工具箱™的命令。
以下是一些示例数据,很多用于测试用可变结的样条近似,所谓的钛热数据。它们记录了作为温度函数测量的钛的一些性能。
[xx,yy] =钛;情节(XX,YY,'X');轴([500 1100 .55 2.25]);标题('钛热数据');抓住上
注意相当尖峰。我们将使用这些数据来说明一些用于结选择的方法。
首先,我们从这些粗略的数据中选择一些数据点。我们将插入使用此子集,然后将结果与完整数据集进行比较。
拾取= [1 5 11 21 27 29 31 35 40 45 49];tau = xx(pick);y = yy(pick);情节(Tau,Y,'ro');传奇({'完整数据集''限定数据'},'地点'那'nw');
一个秩序的花键K.
和n + k
结有N
自由程度。由于我们有12个数据网站,tau(1)<...
T.
长度12 + 4。
而且,结序列T.
必须满足于Schoenberg-Whitney条件,即,必须是第i个数据站点位于第i个B样条的支持下,即,万博1manbetx
t(i)
只有在一个相结的情况下允许的平等K.
。
选择满足所有这些条件的结序列的一种方法是Gaffney / Powell和Micchelli / Rivlin / Winograd的最佳结。
在最佳样条插值,位点的值
Tau(1),......,Tau(n)
说,选择结以使标准错误公式中的常数最小化。具体地,第一和最后一个数据站点被选为k折结。剩余的N-K.
结是由optknt.
。
这是帮助的开始optknt.
:
Optknt最佳结分布。
Optknt(TAU,K)返回“最佳”结序列
数据网站的插值tau(1),...,tau(n)用vickine
订单K. Tau必须是一个越来越多的序列,但这不是
检查。
optknt(tau,k,maxiter)指定迭代的数字MAXITER
要尝试,默认为10。
这种结序列的内部结是n-k
在任何绝对常量函数h〜= 0的签名
满足
积分{f(x)h(x):tau(1)
对于所有花键F的QUART k与结序列TAU。
我们尝试使用optknt.
对于我们的示例的插值,通过立方样条对数据进行插值
(tau(i),y(i)),对于i = 1,...,n。
k = 4;OSP = Spapi(Optknt(Tau,K),Tau,Y);fnplt(OSP,'r');hl =图例({'完整数据集''限定数据'......'立方样条插值使用最佳结'},......'地点'那'nw');hl.position = hl.position - [.14,0,0,0];
这有点令人不安!
在这里,由星星标记,也是内部最佳结:
xi = fnbrk(OSP,'结');Xi([1:k末端+ 1-(1:k)])= [];绘图(xi,repmat(1.4,尺寸(xi)),'*');hl =图例({'完整数据集''限定数据'......'立方样条插值使用最佳结'......'最佳结'},'地点'那'nw');hl.position = hl.position - [.14,0,0,0];
最佳插值的结选择旨在最大限度地实现全部职能F
比例
规范(F - IF)/ NOM(D ^ K F)
尽可能小,其中分子是插值误差的规范,f - 如果
,分母是常态K.
- 内嵌的衍生物,d ^ k f
。因为我们的数据意味着d ^ k f
相当大,数据的平坦部分附近的插值误差对于这种“最佳”方案具有可接受的尺寸。
实际上,对于这些数据,所提供的普通立方样条插值CSAPI.
做得很好:
CS = CSAPI(TAU,Y);fnplt(cs,'G',2);hl =图例({'完整数据集''限定数据'......'立方样条插值使用最佳结'......'最佳结''立方样条插值使用CSAPI'},......'地点'那'nw');hl.position = hl.position - [.14,0,0,0];抓住离开
当通过样条曲线执行最终的平方近似时必须选择结。一种方法是使用同等间隔的结以开始,然后使用纽knt.
通过获得更好的结分布获得的近似。
下一节用完整的钛热数据集来说明这些步骤。
我们从统一的结序列开始。
UNIF = LINSPACE(XX(1),XX(END),2 + FIX(长度(XX)/ 4));sp = spap2(奥尼克(Unif,k),k,xx,yy);情节(XX,YY,'X');抓住上fnplt(sp,'r');轴([500 1100 .55 2.25]);标题('钛热数据');hl =图例({'完整数据集'......使用均匀结的“最小二乘立方样条”},......'地点'那'nw');hl.position = hl.position - [.14,0,0,0];
这并不令人满意。所以我们使用纽knt.
对于相同顺序的样条近似和相同数量的多项式件,但断裂更好分布。
spgood = spap2(newknt(sp),k,xx,yy);fnplt(spgood,'G',1.5);hl =图例({'完整数据集'......使用均匀结的“最小二乘立方样条”......使用newknt'的“最小二乘立方样条”},......'地点'那'nw');hl.position = hl.position - [.14,0,0,0];抓住离开
这相当不错。顺便提及,在这种情况下,即使一个内部结较少也不会被磨损。