主要内容

自然三次样条的最小二乘逼近

最小二乘近似的构造通常要求将数据近似的空间的基础上的基础。作为“自然”立方样条的空间的示例,基础的明确构造并不总是直截了当。

本节明确指出,实际上并不需要显式基础;只要有一些可用的方法可以从近似值的空间中以某种方式进行插值就足够了。为此,曲线拟合工具箱™样条函数支持向量值函数的工作是至关重要的。金宝app

本节讨论用“自然”三次样条最小二乘逼近的这些方面。

问题

您希望构建给定数据的最小二乘近似(X.y)来自空间S.具有给定休息的“自然”立方样条B(1)<......b (l + 1)

一般决议

如果你知道线性空间的一组基(f1 f2…,fmS.所有具有断点序列的“自然”三次样条B.,然后您已经学会了发现表单中最小二乘近似值C(1)f1 +c (2)f2 +……+C(m)fm,与矢量C.线性方程组的最小二乘解a * c = y,其系数矩阵为

a(i,j)= fj(x(i)),i = 1:长度(x),j = 1:m。

换句话说,c = a \ y

需要一个基础地图

通解似乎要求你知道一组基。然而,为了构造系数序列C.,你只需要知道矩阵A..为此,手头就足够了基础地图,即函数F.说,这f(c)返回特定加权和给出的样条C(1)F1+ c (2)F2.+......+ C(m)FM。因为,有的话,你可以获得j = 1:m,这jth列A.as.fnval(f(ej),x),ej.jth列眼睛(m),阶单位矩阵m

更好的是,曲线拟合工具箱样条函数可以处理矢量值功能,所以您应该能够构建基础地图F.处理矢量值系数C(i)也然而,根据协议,在这个工具箱中,向量值系数是a向量,因此序列C必须是列向量的一排矢量,即,a矩阵.那样,F(眼(m))向量值样条是谁的-th组件是基元素f我= 1:m.因此,假设向量X.数据站点是一排矢量,fnval(f(眼睛(m)),x)是矩阵(i, j)- 输入是f的价值x (j),即,翻倒矩阵的A.你正在寻求。另一方面,正如刚刚指出的那样,你的基础地图F.期望系数序列C.是一排矢量,即矢量转换\ y.因此,相应地,假设向量y数据值是行向量,您可以从中获得最小二乘近似值S.数据(X.y),

f(y / fnval(f(眼睛(m)),x)))

要确定,如果你想准备好X.y是任意向量(相同的长度),您将使用

f(y(:)。'/ fnval(f(眼睛(m)),x(:)。'))

“自然”立方样条的基础地图

究竟需要什么基础地图F.对于线性空间S.与断裂序列的“自然”立方样条b(1) <…< b (l + 1)还是假设这种线性空间的尺寸是m,地图F.应该在介于之间设置线性一对一的对应关系m- 查看和元素S..但这正是csape(b,。,'var')所做的事。

为了明确起见,考虑以下函数F.

函数s = F(c) s = cape (b,c,'var');

对于给定的向量C.(与b的长度相同),它提供了独特具有断裂序列B的“自然”立方样条,其取值C(i)b(我)i = 1:l + 1.唯一性是关键。它确保了向量之间的对应关系C.和得到的样条f(c)是一对一的。特别是,m=长度(b).不仅如此,因为它的价值F.T.)功能F.在一个点T.依赖于线性依据F.,这种唯一性确保了f(c)依赖于线性依据C.(因为C.=fnval (F (c), b)可逆线性映射的逆也是线性映射)。

单行解决方案

将其全部放在一起,您到达以下代码

csape (b, y(:)。/ fnval (csape (b,眼睛(长度(b)),“var”),x (:).'),...“var”)

用带断点序列的“自然”三次样条进行最小二乘逼近B.

正确推断的必要性

让我们在Matlab中提供的人口普查数据,在某些数据上尝试它®通过命令

负载的人口普查

它供给了岁月,1790:10:1990,原样cdate值为pop.使用break序列1810:40:1970

B = 1810:40:1970;s = csape(b,... pop(:)'/ fnval(csape(b,眼睛(长度(b)),'var'),cdate(:)'),'var');fnplt(s,[1750,2050],2.2);在情节上(Cdate,Pop,'或');hold

看一看由三个内部断裂的“自然”立方样条逼近的最小平方用深蓝表示得到的近似值,以及给定的数据。

这看起来是一个很好的近似,除了它不像一个“自然的”三次样条。回想一下,一个“自然的”三次样条必须在第一次中断的左边和最后一次中断的右边是线性的,而这个近似不满足任何条件。这是由于以下事实。

提供给定数据的“自然”立方样条嵌段csape.在ppform中,由数据站点所跨越的间隔是它的基本间隔。另一方面,在MATLAB中计算pform的基本区间之外的值ppval或曲线拟合工具箱样条函数fnval.,通过使用ppform的相关多项式端块,即全阶外推。对于“自然的”三次样条,您需要的是二阶外推。这意味着,在第一个断点的左边,要有一条与三次样条值和斜率一致的直线。这样的推断是由fnxtr.由于“自然的”三次样条在第一次断裂时二阶导数为零,因此这种外推是偶三阶的,即满足三个匹配条件。同样地,在三次样条的最后一次中断之后,你想要的直线在最后一次中断时的值和斜率与样条一致,这也是由fnxtr

由三个内部断裂的“自然”立方样条逼近的最小平方

正确的单行解决方案

下面的一行代码提供了对数据的正确的最小二乘近似(X.y)的“自然”三次样条与中断序列B.

fnxtr (csape (b, y(:)。' /…fnval (fnxtr (csape (b、眼(长度(b)),“var”)),x(:)。”),“var”))

但不可否认,这是一条相当长的线。

以下代码使用这种正确的公式和绘图,在更薄的红线中,结果近似在早期的图中,如图所示由三个内部断裂的“自然”立方样条逼近的最小平方

ss = fnxtr(csape(b,pop(:)'/ ... fnval(fnxtr(b,眼睛(b),'var'),cdate(:)'),'var'));保持ON,FNPLT(SS,[1750,2050],1.2,'R'),网格,持续传奇('不正确的近似','人口',...'正确近似')

三次样条的最小二乘逼近

如果你想用空间来近似的话,一行的解决方案是完美的S.给定断点序列的所有三次样条B..您甚至不必使用曲线拟合工具箱样条函数,因为您可以依赖Matlab样条.你知道,有C.多包含两个条目的序列B.样条(B,C)提供具有断点序列的独特三次样条B.这是价值c (i + 1)b(我),所有,并占领斜坡C(1)B(1),以及斜率c(结束)B(结束).因此,样条(B,。)是一个基础地图S.

不止这些,你知道的样条(b, c, xi)提供价值xi.插值样条。最后,你知道的样条可以处理矢量值数据。因此,以下一行代码由具有中断序列的立方样条构造最小二乘近似B.数据(X.y):

样条素(B,Y(:)'/样条(B,眼睛(长度(b)),x(:)'))