多项式插值与样条插值的解释与示例(matlab)
插值介绍
信号插值,就是用已知点的测量值估计未知点的近似值。信号插值算法的应用范围有:
- 提高显示效果;
- 节省硬件成本,以软代硬;
- 减少远距离、大量数据通信的需要;
- 进行数据、图像解压缩
- 求解微分方程、积分方程;
- 计算函数值、零点、极值点、导数以及积分。
插值与拟合的异同点:
- 相同点:插值已知一些离散点,在一定约束下,求取定义在连续集合上的未知连续函数。
- 在图像上面不同:插值在图像上是一定得通过这些点,而拟合是拟合在图像上是逼近这些点。
- 在几何含义上不同:插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点,拟合是给定了空间中的一些点,找到一个已知形式 未知参数的连续曲面来最大限度地逼近这些点。
多项式插值
对于n+1个点,我们可以找到一个次数不超过n的插值多项式:f=an∗Xn+a(n−1)∗Xn−1+⋯+a1∗X+a0f=an*X^{n}+a(n-1) * X^{n-1}+\dots+a1*X+a0f=an∗Xn+a(n−1)∗Xn−1+⋯+a1∗X+a0,可以通过求解n+1个方程组(如方程组\ref{多项式拟合方程组}),得到a0,a1,a2,…a_0,a_1,a_2,\dotsa0,a1,a2,…
{y1=a0+a1x1+⋯+an+1x1ny2=a0+a1x2+⋯+an+1x2n…yn+1=a0+a1xn+1+⋯+an+1xn+1n\left\{\begin{aligned} y_1&=a_0+a_1x_1+\dots+a_{n+1}x_1^{n}\\ y_2&=a_0+a_1x_2+\dots+a_{n+1}x_2^{n}\\ &\dots\\ y_{n+1}&=a_0+a_1x_{n+1}+\dots+a_{n+1}x_{n+1}^{n}\\ \end{aligned}\right. ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧y1y2yn+1=a0+a1x1+⋯+an+1x1n=a0+a1x2+⋯+an+1x2n…=a0+a1xn+1+⋯+an+1xn+1n
若方程组的解唯一,则对应的插值多项式具有唯一性。多项式拟合一般具有原理简单、计算复杂、难以得到简单的多项式等特点。
三次样条插值
函数定义在区间[a,b][a,b][a,b]上,给定n+1个节点和一组与之对应的函数值,且函数满足:1,每个节点上满足S(xi)=f(xi)(i=0,1,…,n−1)S(x_i)=f(x_i) (i=0,1,\dots,n-1)S(xi)=f(xi)(i=0,1,…,n−1);2,在[a,b][a,b][a,b]上有连续的二阶导数;3.在每个小区间[xi,xi+1](i=0,1,…,n−1)[x_i,x_{i+1}] (i=0,1,\dots,n-1)[xi,xi+1](i=0,1,…,n−1)上是一个三次多项式,则称S(xi)S(x_i)S(xi)为三次样条插值函数。
三次样条插值函数S(x)S(x)S(x)是一个分段三次多项式,要求出S(x)S(x)S(x),在每个小区间[xi,xi+1][x_i,x_{i+1}][xi,xi+1]上要确定4个待定参数,若用Si(x)S_i(x)Si(x)表示它在第i个子区间[xi,xi+1][x_i,x_{i+1}][xi,xi+1]上的表达式,则:
Si(x)=ai0+ai1x+ai2x2+ai3x3(i=0,1,⋯,n−1)S_{i}(x)=a_{i 0}+a_{i 1} x+a_{i 2} x^{2}+a_{i 3} x^{3} \quad(i=0,1, \cdots, n-1) Si(x)=ai0+ai1x+ai2x2+ai3x3(i=0,1,⋯,n−1)
举个例子
已知函数y=f(x)的一组数据如表表格:
x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|---|
y | 12.34 | 13.02 | 13.98 | 13.52 | 12.81 | 11.08 | 9.96 | 9.51 | 10.23 | 11.14 | 12.25 |
对这些数据进行多项式插值和三次样条插值,并求:x= 3.5, 4.1, 6.2, 4.5时,y相应的多项式插值和三次样条插值函数值。
绘制函数y=f(x)在区间[0, 10]上的多项式插值函数图形,并将已知点用“∘\circ∘”标出。
绘制函数y=f(x)在区间[0, 10]上的三次样条插值函数图形,并将已知点用“×\times×”标出。
分析
本题要求依据所给数据计算多项式插值和三次样条插值,并求出特定自变量下插值的函数值,以及绘制函数图像。使用matlab的多项式插值函数polyfit(x,y,n)polyfit(x,y,n)polyfit(x,y,n)和三次样条插值函数spline(x,y,xq)spline(x,y,xq)spline(x,y,xq)进行计算。其中polyfit(x,y)polyfit(x,y)polyfit(x,y)的xxx和yyy为原始数据点,nnn为拟合阶数,返回值为多项式的系数;spline(x,y)spline(x,y)spline(x,y)的xxx和yyy为原始数据点。
求指定的y值
多项式插值
将给定的x和y数据导入matlab,并计算多项式系数。一共11个点,故选取10次多项式进行插值,使用polyfit命令。求得的插值系数用poly2str指令组装成插值多项式,多项式的函数表达式为:y=2.7111e−05x10−0.0013742x9+0.029925x8−0.36589x7+2.7538x6−13.1433x5+39.4708x4−71.2356x3+68.9205x2−25.7489x+12.34y=2.7111e-05 x^{10} - 0.0013742 x^9 + 0.029925 x^8 - 0.36589 x^7 + 2.7538 x^6- 13.1433 x^5 + 39.4708x^4 - 71.2356 x^3 + 68.9205 x^2 - 25.7489 x+ 12.34y=2.7111e−05x10−0.0013742x9+0.029925x8−0.36589x7+2.7538x6−13.1433x5+39.4708x4−71.2356x3+68.9205x2−25.7489x+12.34.将x=(3.5,4.1,6.2,4.5)带入,解得y的值为:13.3404,12.6595,9.8347,11.9664.将结果制表、绘图,如下表、下图:
x | 3.5 | 4.1 | 6.2 | 4.5 |
---|---|---|---|---|
y | 13.3404 | 12.6595 | 9.8347 | 11.9664 |
样条插值
样条插值所用命令为spline,官方介绍spline函数的输入输出为yy = spline(x,y,xx);其中x和y为已知点,xx为待求点x轴坐标,yy即为输出对应待求点的y轴坐标。
故运行命令y3=spline(x,y,x1);即可得到待求点的样条插值。y3的值为: 13.2476, 12.6730, 9.8032, 11.9877.将结果制表、绘图,如下表、下图:
x | 3.5 | 4.1 | 6.2 | 4.5 |
---|---|---|---|---|
y | 13.2476 | 12.6730 | 9.8032 | 11.9877 |
插值求函数图形
多项式插值
将x在0-10上间隔采样,得到的值带入上述求值函数中,可以得到对应的y值,再将(x,y)坐标用绘图命令绘制,即得插值函数图形。函数t=f(x)在区间[0,10]上的多项式插值函数图形如图所示:
样条插值
x在0-10上间隔采样,得到的值带入yy=spline(x,y,xx)的xx里面,返回值为与xx拥有相同维度的yy,yy为样条插值的输出结果。绘图,函数t=f(x)在区间[0,10]上的样条插值函数图形如图所示:
总结
- 多项式插值先设插值多项式函数,再将各节点的函数值代入多项式里,便得到个等式,得到一个关于多项式里系数的线性方程组,解此线性方程组,便得到所要求的插值多项式。
- 样条插值是对每一个小区间进行插值,使得端点处满足某种条件的光滑(本文所用的三次样条插值则要满足二阶导数连续),根据这个要求,在未知导数的情况下推导出样条函数。
- 本次作业练习了多种插值的求解方法,一定的数据求解让我对插值的含义和运用场景有了更多的认识。在插值求解函数图像时,似乎多项式插值比样条插值更光滑,但是多项式插值的求解涉及大型矩阵求逆,且过分强调每一个数据,在预测未知量时泛化能力可能有所欠缺。
程序
matlab的.m程序下载链接: 用matlab对一组数据求解多项式插值和三次样条插值.
多项式插值与样条插值的解释与示例(matlab)相关推荐
- 基于神经网络多项式插值的图像超分辨重构研究-附Matlab代码
⭕⭕ 目 录 ⭕⭕ ✳️ 一.引言 ✳️ 二.基于单帧图像的超分辨率重构技术 ✳️ 2.1 最近邻域插值法 ✳️ 2.2 双线性插值法 ✳️ 2.3 双三次插值法(Keys'插值) ✳️ 三.神经网络 ...
- 插值与拟合 (一) : 拉格朗日多项式插值 、Newton插值 、分段线性插值、Hermite插值 、样条插值、 B 样条函数插值、二维插值
插值:求过已知有限个数据点的近似函数. 拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小. 插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似 ...
- 数学建模准备 插值(拉格朗日多项式插值,牛顿多项式插值,分段线性插值,分段三次样条插值,分段三次Hermite插值)
文章目录 摘要(必看) 0 基础概念 什么是插值 插值用途 什么是拟合 插值和拟合的相同点 插值和拟合的不同点 1 常用的基本插值方法 1.1 多项式插值法 1.1.1 拉格朗日多项式插值法 多项式插 ...
- 吉布斯现象与插值优化(上)Matlab实现多项式插值
前言 傅里叶变换是贯穿一系列课程的应用,从起初的不知其所以然到学习电路理论时的轮廓逐渐清晰. 在电路理论的结课复习阶段,我在图书馆找到国外教材翻阅,关注到行文中提到的吉布斯现象(Gibbs Pheno ...
- 数值分析——多项式插值
多项式插值 这段时间关注了一个数值分析的课程,是华东师范大学潘建瑜老师的课,看了一遍课件,将内容梳理一下,做个笔记. 什么是插值 已知一个函数 f ( x ) f(x) f(x)在 [ a , b ] ...
- 机器学习数据预处理之缺失值:插值法填充+多项式插值
机器学习数据预处理之缺失值:插值法填充+多项式插值 garbage in, garbage out. 没有高质量的数据,就没有高质量的数据挖掘结果,数据值缺失是数据分析中经常遇到的问题之一.当缺失比例 ...
- c语言构造插值多项式,拉格朗日多项式插值(C语言).docx
拉格朗日多项式插值(C语言) #include #include #include float lagrange(float *x,float *y,float xx,int n)/*拉¤-格?朗¤¨ ...
- matlab 平滑曲线连接_平滑轨迹插值方法之多项式插值(附代码)
前言 今天我们来聊聊轨迹插值,在机器人的运动规划和控制领域,参考轨迹的生成是一个历史悠久的问题,已经发展出了一系列的方法.今天我们就来聊一聊轨迹插值领域中最常见的轨迹插值方法:多项式插值. 说明:本文 ...
- matlab全域基函数,多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]...
全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数.关于多项式插值的基本知识,见"计算基本理论". 在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值 ...
- 轨迹规划当中用到的多项式插值和样条曲线
机器人之路漫漫兮.要想要得到成绩还需要付出许多的努力. 轨迹规划 轨迹规划可以这么分类: 1.笛卡尔空间规划 位置规划:直线插补.圆弧插补.NURBS自由曲线插补 姿态规划:四元数.slerp 2.关 ...
最新文章
- LeCun预言的自监督模型来了:首个多模态高性能自监督算法,语音、图像文本全部SOTA...
- Mysql的concat concat_ws group_concat
- VS 2005 安装一个的小问题
- JS动态添加span等标签
- Java-eclipse快捷键及设置
- Kafka2.12安装与配置/生产与消费
- 大数据分析的价值体现
- ftp文件夹错误 windows无法访问此文件夹_Adobe 安装错误代码对照表及解决方案
- GZip压缩的js文件IE6下面不能包含script标签
- 【整理分享1】PHP中exit()与die()的区别
- 在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
- Windows10 永久激活查询/激活时间查询/激活查询命令/激活码查询
- c语言中输入数组时用不用加地址符,C语言中,用格式符”%s”输入字符数组时,数组名前不能加。...
- 网站导航应该怎么设计?
- 校园二手交易平台-程序流程图
- 深拷⻉和浅拷⻉区别是什么?
- 什么是机器学习?机器学习与AI的关系?
- 智慧水务信息化系统的意义
- word里如何在□里打√!框框里打勾
- isolinux.cfg配置文件的写法
热门文章
- dex2jar .\classes.dex - .\classes-dex2jar.jar com.googlecode.d2j.DexException: not support version
- python输入城市找省份_python实现城市和省份字典(根据城市判断属于哪个省份)...
- html页面禁止保存图片,JavaScript 禁止用户保存图片的实现代码
- sap的pod确认_PO确认控制
- SUMO地图中添加交通流
- 软件测试--面试时怎么介绍前公司的项目经验
- texlive的安装
- LayaBox---Dialog弹窗
- 苹果iPhone手机用iTunes更新IOS14.3系统失败怎么解决
- 华为ensp 多区域OSPF配置