当前课程知识点:数学建模 > 第2章 数据处理方法 > 2.5 样条插值 > 2.5 样条插值
同学们大家好
我们刚才已经说过了线性插值
那么大家可以想象
在分段函数节点上
左边一个线性函数 右边一个线性函数
那么很容易形成一个尖点的
所谓尖点的话也就换句话说
左边函数它的斜率跟
右边的函数的斜率就不相等
不相等的话
那这个地方就变成一个凸点了
对吧变成一个间断的一个点了
那么这么一来的话大家可以设想出来
这样得到的一个分段函数
或者得到一个插值函数
那就有点不光滑了
有点不大
好看因此我们就开始考虑
另外一种差值叫做为样条插值
所谓样条插值的话
想法也是一样的
也就说我们想办法用一个比较好看的
比较光滑的比较连续的一个函数对吧
那我把这些节点呢
都跟它连接起来
都跟它连接起来
同时呢 我们又希望这个函数呢
同时呢 我们又希望这个函数呢
一定要踏踏实实的通过所有的节点
使得它的精度对吧
要求误差要求为零
这就是我们说的这么一个想法
好的
再这样条插值过程当中
我们一般都来说都是用一些
多项式来进行来刻画它
也就是说内接插值函数我们中一些
多项式函数再进行刻画
那么今天是多项式函数
那就是我们通常说的
x n次方加上x(n减1)次方
加上多少多少
那么这么一来了
大家可以设想一下
如果n要等于一呢
那不就是我们说的线性的样条吗
如果n要等于2那
那不就是二次样条或者我们通常说的
n等于三就我们说三次的样条了
那么想法呢
就是使得通过这些节点
能够稍微使得总的插值函数
能够相对光滑起来
我们这种想法把它称作为样条差值
好的那么这样一来的话
我们说n等于1的话
就变成我们线性样条
那么线性样条它的好处呢
我们可以设想一下
它是非常简单的
因为是线性函数两个点确定一条直线
那就非常好的事情了
但是呢
它的缺点的也同样非常明显
也就是说
整个一个曲线呢不够光滑
因为我们说的左边的斜率
跟右边的斜率它是不一样的
也就是说左边的导数跟右边导数
它也就不大一样了
例如看这么一个例子
我们说有x有四个点
3 4.5 7 9分别对应的函数值呢
2.5 1.0 2.5跟0.5
我们做这四个点的话
如果我们用线性的样条插值来描述的话
那就是把这四个点
跟它连起来
那么这四个点连起来的话
就形成一个折线那么从这个折线
里面可以看得出来
那么在每一个节点上的话
都是一个尖尖的
我们说的两边的导数都不一样
也就是看起来不是那么光滑的事情
于是呢
我们就开始对它做一些高一点的要求
我们能不能把这些
一个函数通过这些节点呢变得平滑起来
变得光滑起来
那么怎么变得光滑
变得平滑起来呢
于是我们想到的第一个办法
每一次的差值的时候
每一次的差值的时候
我们用个二次函数来进行差值
也就用我们说的ax平方加bx加c来进行差值
那就说在x0到x1之间我用一个
a a1x1平方加b1x1加c1
在我们说x1跟x2之间呢
我用a2x平方加b2x加c2
那么x2跟x3之间
我们用一个a3x平方加b3x加c3来进行刻画
因为相对是二次函数
所以我们说看起来总的插值函数呢
就显得比较光滑了
就显得比较光滑了
那用了二次插值函数以后可以看得出来
我们像一个二次函数就有
A B C三个参量三个参数
那么这么一来的话
三个二次函数就变成我们的九个参数了
九个参数要刻画它的话
那么很自然的话就应该要九个方程了
所以接下来我们就开始来考虑
怎么来得到这九个方程
首先我们来看
如果你想连续下去的话
那么很自然的话
这些方程在节点的地方
左边一个函数跟右边一个函数在节点
这地方很自然的话
它的值必须要相等
如果它不等的话就高或者低了
所以别说光滑间断就出来了
所以呢
这么一来的话
我们就可以得到这四个方程了
例如用左边一个函数
fx1带进来
a1x平方b1x加c1带着x1这个地方
它应该跟谁呢
跟用a2这个函数ax平方+加bx2加c2带进来
在这点上
大家的值都应该是严格相等的
大家都应该等于fx1
同样的道理
在我们刚在图里面的对吧
在x2这个点上
左边的是我们的a2 b2 c2组成的二次函数
右边的是我们是a3 b3 c3
组成二次函数
那么在x2这点那大家的值呢
也应该都要等于fx2
所以这样一来那我们就得到这四个方程了
接下来我们继续来考虑
这是把我们的x1 x2
说清楚了
还有两头有两个点
有第一个端点
最后一个端点那么很自然的话
第一个端点应该满足我们说的fx0
它的值应该严格相等
最后一个端点呢 应该等于fx3
它的端点一样
也就换句话说
把a1 b1 c1对吧
用x0来替代它应该得fx0
把a3 b3 c3
用x3来替代它应该等于fx3
所以这样一来呢 又多了两个方程
就得到了六个方程了
得到六个方程了
我们接下来还差三个方程
另外3个方程怎么来看那
好的接下来我们来开始考虑
考虑中间两个节点
一个是x1一个是x2
如果想让它光滑一下的话
那么很自然就希望什么
希望这两个函数在这个x1 x2这边的
我们的一阶导数要能够相等起来
因为它是个二次函数ax平方加bx加c
所以它一阶导数呢
就是我们说2ax
加上我们的b
那么分别把x1带进去
那么分别把x1带进去
分别把x2带进去
所以很自然的话
我们说用a1这一种
我们说用a1这一种
1阶导数带进去以后给我们的a2这一组带进去
在这x1点就应该相等的了
那么用a2的一阶导数
对a3的一阶导数带进来
在x2这点
它应该也是相等的了
所以呢
这样一来就得到我们说的两个方程
在一阶导数
在这个地方
它必须相等
好的这样就得到了八个方程了
最后我们在考虑最后一个方程
最后一个方程考虑什么
最后一个方程考虑什么
我们就考虑起头的那个二次函数
我们就考虑起头的那个二次函数
起头的那个二次函数
我们就是说a1x平方加b1x加c
那么既然是起头的函数
那我们就考虑什么东西
我们希望它尽量的简单一点
简单一点的就希望什么
希望它的二阶导数为零了
二阶导数为零的话
那么很自然
就说
a1为零了
好的这么一来的话
我们就相当得到了九个方程
正好是九个参数
那么很自然的话
方程数跟参数数是一样的 未知量是一样的
所以呢
我们就可以把它求解出来了
把相关的数据带进来以后
就得到了这么一个线性方程组
那把这个线性方程组呢
给它求解出来
我们就可以把相应的
a1 b1 c1
a2 b2 c2
以及a3 b3 c3
都可给它求出来了
于是呢用二次样条
我们来拟合刚才说的三个四个点的话
对吧就是我们说的得到这么个曲线
那么这么一个曲线可以看得出来
比我们刚才的线性的差值
肯定要光滑的多的多了
没有那么一个尖点出来了
这是我们说的二次样条
如果我们说对这个函数
如果你还不满意的话
还觉得有点尖有点突
那我们可以尝试用什么呢
我们可以尝试用三次样条
对它进行了差值
那么三次样条进行差值的话
手法跟刚才的手法也是完全一样的
所谓三次样条的话
差值的话不就说用到三次函数吗
也就我们通常说的
ax三次方加上bx次方加cx加d来进行操作
那么在这地方的话我们可以看出来
那我总共是四个点
我们也可以分成三个区间
那么第一个区间用a1一组
a1 b1 c1
第二个区间用a2
a2 b2 c2
第三个呢
我们用a3 b3 c3
那么这么一来了
搁在一块的话
我们就可以得到12个参数了
12个参数
大家可以设想要想求解的话
就应该得到什么
12个方程
那么在这12个方程里面求得了
那么一样的根据我们的想法
第一个想法
我们说的所有的函数
在节点的地方
它的函数值要完全相等
例如我们说的
a1那一组在x1那个地方值
就应该得fx1
a2这一组同样在x1这个地方
他应该等于fx1
那么在x2这个地方
那么在x2这个地方
用a2那一组在用a3那一组带来
用a2那一组在用a3那一组带来
我们就这样就得到了四个方程
所以我们说这两个x1 x2
这两个节点上它的值必须要相等
所以这样就得到四个方程了
好的 接下来两个方程
指的是什么指的是在
最头上一个端点第一个端点跟最后的一个端点上
那么这样一来的话也要满足
也要满足的话
那么很自然的话
就把a1
那一组数字用x0来替代最后呢
把a3这这组数字用x3来替代
分别都要等于fx0分别等于fx3
那么把它带进去以后我们又得到两个方程
所以这样的就像得到了六个方程了
紧接着下来
跟你刚刚的思路完全一样
那么我们就希望在
x1x2这两个点上
它的一阶导数的值要
它的一阶导数的值要
严格相等
严格相等
一阶导数是要严格相等的话
那么很自然的可以保证
曲线是什么东西至少光滑
可以保证曲线的稍微光滑
好的今天一阶导数
那么大家可以设想
ax三次方加上bx平方加cx加d
那一阶导数把它求过来的话
就应该是3ax平方
加上2bx加上c了
那么分别把x1 x2带进去
这样我们得到两个方程了
好的除了一阶导数要满足要求的话
那么我们想让它更光滑的话
我们还可以提个要求
就是它的二阶导数还必须相等
二阶导数呢
我们说对它再进行求导的话
那么就3ax平方那在求就当成变成6ax了
6ax加上2b
属于分别把x1 x2带进来以后
我们
关于二阶导数相等的话
又得到两个方程了
所以这个时候呢
我们就得到了十个方程了
得到十个方程了
好的最后再来考虑
我们在第一个方程里面
我们如果想让它稍微简单一点的话
那么我们就可以要求它的
二阶导数为零
二阶导数为零的话
很自然的话我们就可以得到两个条件
一个条件的是a1等于0
一个条件是b1等于0
这么一来的话
我们就构成了12个方程
我们就构成了12个方程
正好有12个参数
那么我们很自然的话
就可以把这些所谓的
a1 b1 c1 d1
a2 b2 c2 d2
以及a3 b3 c3 d3
都可以给它求出来了
于是我们就得到右边的这么一个图了
那么相比之下
那么这个图比我们刚才说的二次样条的图就显得更为光滑了
总的来说
我们许多样条
它的次数越来越高的话
我们所得到的差值函数
它是一步步更为光滑下去
那么利用插值函数
来进行我们说的数学建模
实际上的话
一个基本的出发点就是
希望我们的误差的精度越来越高
或者说希望误差的越来越小
这么一来甚至为零
这样就得到了一个东西
好的 总的来说
我们在这一章里面
我们是基于数据本身
能够带有或者反应
我们客观事物的一些属性
或者一些信息利用数据
来进行一些组建
数学模型或者说利用数据来
对一些数学模型的一些参数进行估计
这是我们在数学建模里面
通常非常常用的一种办法
也是一种非常重要的办法
那么这种方式的话
在我们后面的参数变式啊
或者自动控制等等方面都会用到很多
那么我想这一章关于数据处理的
我们就说到这里
同学们 下课再见
-1.1 案例分析
-1.2 数学建模绪论
-1.3 数学建模活动
-第1章 习题
--第1章 习题
-2.1 最小二乘方法
-2.2 拟合函数的扩展
-2.3 最小二乘方法应用
-2.4 线性插值
--2.4 线性插值
-2.5 样条插值
--2.5 样条插值
-第2章 习题
--第2章 习题
-3.1 Malthus模型
-3.2 Logistic模型
-3.3 捕食者模型
-3.4 差分方程模型
-3.5 随机动态模型
-第3章 习题
--第3章 习题
-4.1 成对比较矩阵
-4.2 一致性指标
-4.3 权重向量的计算
-4.4 量纲分析
--4.4 量纲分析
-4.5 轮廓模型
--4.5 轮廓模型
-第4章 习题
--第4章 习题
-5.1 名额分配
--5.1 名额分配
-5.2 Hamilton方法
-5.3 Q方法
--5.3 Q方法
-第5章 习题
--第5章 习题
-6.1 两变量的线性规划
-6.2 单纯形方法
-6.3 整数规划
--6.3 整数规划
-第6章 习题
--第6章 习题
-7.1 模糊集合
-7.2 模糊关系
--7.2 模糊关系
-7.3 模糊综合决策
-7.4 模糊聚类分析
-第7章 习题
--第7章 习题