三次样条插值证明过程及代码实现
一、什么是插值?
已知部分离散的数据点,但不知道满足这些数据点的函数表达式,插值、拟合都是寻找对应点的函数表达式。区别在于,插值函数是通过这些点,而拟合是要求形似而不要求穿过已知数据点。
二、常见的插值方法
1.拉格朗日插值
2.埃尔米特插值(插值多项式在插值节点上函数值相等,再节点上的导数值也相等)
3.分段低次插值:
它的提出是由于高次插值的病态性质:从拉格朗日插值的余项可以看出。当节点增加且l(x)的次数n增加时,l(x)逼近f(x)的精度就越好,但实际并非如此。当n趋于无穷大的时候,l(n)不一定收敛到f(x).并且函数曲线会出现剧烈的振荡,即龙格现象。
for i=3:2:11
x=linspace(-1,1,i);
y=1./(1+25*x.^2);
p=polyfit(x,y,i-1);
xx=-1:0.01:1;
yy=polyval(p,xx);
plot(xx,yy,'b');
hold on;
grid on;
end;
plot(x,1./(1+25*x.^2),'r');
结果:
4. 三次样条插值:
对于分段低次插值函数都有一致收敛性,但光滑度较差,对于像高速飞机的机翼形状、船体放样灯型值线往往需要有二阶光滑度。三次样条插值函数就是把已知数据分割成若干个小区间,在每个小区间上都是三次多项式,并且一阶导数连续,二阶导数连续,函数值也连续。
疑问?为什么会有边界条件?(我们这篇博文写的是确定n+1个点的三次样条插值多项式)
由于三次样条插值函数在每个小区间上是三次多项式,所以在每个小区间上有四个待定参数,n+1个节点n个区间,所以有4n个参数,而根据插值条件和一次连续可微所含的条件有4n-2个条件,因此还要加两个两个条件,即边界条件。
三、详细推导过程
(一) 设出S(x)函数
(二) S(x)的二阶导连续
(三)边界条件
(四)由于S(x)的二阶导数为线性函数形式简单。可以设出二阶导数的表达式,然后再积分两次就可以得到S(x)的表达式再求出参数
两次积分最后整理:
再利用一阶导数连续求M:
整理可得
上面给出了含有n+1个参数 的n-1个方程,下面利用边界条件再给出2个方程。
第一种边界条件下可解出求解M的n阶方程组为:
第二种边界条件下可解出求解M的n-1阶方程组为
第三种边界条件:
求解利用追赶法。
四、python代码:
import matplotlib.pyplot as plt
import pandas as pd
from scipy import interpolat
data = pd.read_excel('C:/Users/bwy/Desktop/三样条.xlsx')
x = data['x'] # 取第一列数据
y = data['value'] # 取第二列数据
# 进行样条插值
tck = interpolate.splrep(x,y)
xx = np.linspace(min(x),max(x),100)
yy = interpolate.splev(xx,tck,der=0)
print(yy)
plt.plot(x,y,'o',xx,yy)
plt.show()
结果:
三次样条插值证明过程及代码实现相关推荐
- aitken插值方法的c++代码_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...
自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的.碰撞避免的行驶路径和舒适的运动速度.生成行驶路径最经典方法之一就是是Sampling ...
- 滑动轨迹 曲线 python_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...
自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的.碰撞避免的行驶路径和舒适的运动速度.生成行驶路径最经典方法之一就是是Sampling ...
- 【matlab】三次埃尔米特插值与三次样条插值的实际应用代码
要求:完成下列这些数据的插值,并将结果保存到一个EXCEL表格中.要求至少选取两种插值方法,并对1号池中的这些指标做出插值后图像(显示在同一个图像中) Z.mat load Z.mat x=Z(1,: ...
- Matlab数值分析实例:三次样条插值
Matlab数值分析实例:三次样条插值 任务要求 分析 代码实现 总结 任务要求 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低.这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺 ...
- 【插值】牛顿插值、拉格朗日插值、三次样条插值的Python代码实现
插值简介 插值即根据有限的离散点绘制出穿过所有样本点的曲线,从直观上想象似乎画一条穿过n个特定点的曲线有无数种画法,但从数学意义上来说我们希望画出的曲线能够尽量平滑,震荡幅度尽量小能够在非样本点上符合 ...
- 三次样条插值(Cubic Spline Interpolation)及代码实现(C语言)
样条插值是一种工业设计中常用的.得到平滑曲线的一种插值方法,三次样条又是其中用的较为广泛的一种.本篇介绍力求用容易理解的方式,介绍一下三次样条插值的原理,并附C语言的实现代码. 1. 三次样条曲线原理 ...
- MATLAB代码实现三次样条插值
参照<数值分析 第五版(李庆扬)>P42 2.6.2样条插值函数的建立 目的是可以通过读取文本文件中提前存储的坐标点,来实现三边界种类型的三次样条插值 F.m function resul ...
- Spline(三次样条插值)
关于三次样条插值,计算方法比较复杂,但是静下心来仔细研究也是可以理解的. 本文借鉴文章来源:http://www.cnki.com.cn/Article/CJFDTotal-BGZD200611035 ...
- python三次样条插值拟合的树行线_数学建模笔记——插值拟合模型(一)
啊好像距离上次写作又过了七天,啊好像我之前计划的一周两三篇,啊辣鸡小说毁我青春,啊我是一只可怜的鸽子. 不管怎样,我又回来了,并坚定地更新着hhh.再过两三天就是我们学校数学建模选拔,再过八九天就是期 ...
- 数学建模十大算法02—插值与拟合(拉格朗日插值、三次样条插值、线性最小二乘法……)
文章目录 引入 一.插值 1.1 分段线性插值 1.2 牛顿插值法 1.3 拉格朗日插值多项式 1.4 样条插值 1.4.1 三次样条插值 1.5 二维插值 1.5.1 插值节点为网格节点 1.5.2 ...
最新文章
- 廖雪峰为你无门槛讲述高并发那些事
- FPGA的设计艺术(8)最佳的FPGA开发实践之严格遵循过程
- 走过13,展望14----希望是个好东西
- 从Config文件中读取节点的配置信息
- ABAP在ALV工具栏显示一个计时器
- 序列化加密字段_自动加密可序列化的类
- python2 python3 通信_python与USB通信
- android (三)、Activity工作原理
- 老罗Android开发视频教程
- 中国中小管理咨询公司现状
- 计算机主机硬件部分组成,台式电脑主机的硬件组成部分
- 组合数公式用C语言怎么算,排列组合c怎么算 公式是什么
- python怎么做计算题_用python做算术题
- 无监督re-ranker,Improving Passage Retrieval with Zero-Shot Question Generation
- 进阶篇:3.1)注塑件设计
- 解决fatal: could not get a repository handle
- iOS微信发布8.0.29版本,苹果14用户快来
- JavaScript数组内置方法-知识
- 读书笔记之张潇雨个人投资课
- 带你认识磁性材料及下游产品全球主流认证标识
热门文章
- 详解boost库中的Message Queue
- Chrome 浏览器插件之监控网页地址
- SAP 工单报工批次确定自动带出批次并拆分
- macbook安装免费vmware fusion
- 电容屏物体识别_浅谈多点电容屏物体识别,实物识别技术
- 大型体检系统源码,PEIS医院体检管理系统源码
- 微pe工具箱 系统安装教程_微PE工具箱安装系统教程(Win7或Win10)
- android iphone滑动解锁,苹果iOS10锁屏详解:“滑动来解锁”已成为过去
- 软件项目管理测试文档,软件项目管理具体方法体系示例
- 计算机变网络限速,电脑网速太慢?先别着急找运营商,修改这个限制瞬间变流畅...