数学建模学习之插值法
插值函数
1插值原理
数据不够,构造函数,来求取其它缺失的数据
P(x)是次数不超过n的代数多项式,p(X)=a0+a1x+........+anxn
P(x)是分段多项式,为分段插值
P(x)为三角多项式,为三角插值(傅里叶变换)
插值法原理
插值法推导
多项式唯一定经过所有点,则方程组AX=Y
判断A可不可逆,看行列式等不等于0
从而证得多项式唯一
——————————————————————————————————————————————————————————————————————————————————————————————————
三种常用插值方法
2.1牛顿插值
牛顿插值也是次多项式插值,提出了构造插值多项式的另一种方法。它具有继承性和易变化节点的特点。
牛顿插值原理:
Newton插值的方法:
由表1构造的牛顿插值多项式为:
用上式插值时,首先要计算各阶差商,而各阶差商的计算可以归纳为一阶差商的逐次计算,一般的
余项为:
其中:
2.2分段三次埃米尔特插值
对于f(x)函数,有时我们不仅知道它在一些点处的函数值,而且还能知道它在这些点的导数值。当在这些点上的插值函数P(x)的函数值和导数值同时满足与f(x)的函数值和导数值相等的要求时,此时的问题就是Hermite插值问题或带有导数的插值问题。
定已知函数f(x)在插值区间[p,q]上的个互不相同的节点xi(i=0,1....,n)处满足f(x1)=f1及
如果函数的存在满足下列条件:
①G(x)在每个小区间上的多项式次数为3;
②
③
就称是在个节点上的分段三次埃尔米特插值多项式。
所以,
matlab代码如下:
p=pchip(x,y,new_x);
%分段三次埃米尔插
%x是已知样本点的横坐标,y是已知样本点的纵坐标,new_x是要插入处对应点的横坐标
%分段三次埃米尔插
%x是已知样本点的横坐标,y是已知样本点的纵坐标,new_x是要插入处对应点的横坐标,这也是计算机绘图的基本原理。
2.2三次样条插值
2.2-1样条插值的相关概念
分段低次插值函数,虽然有收敛性,但平整度差。因此,早期的制图工程师在制图时首先会在样点处固定弹性木条,其他各处任意成形,这样就能画出一条曲线,定义样条曲线。事实上,该曲线是由分段三次曲线并接而成,在连接点也就是样点上必须要二阶连续可导,从数学角度加以归纳得到数学样条这个概念。
利用样条插值方法得到的插值曲线光滑性好,但却不收敛。由此我们可以引用三次样条函数以达到插值函数的收敛性且光滑度也更好了。
2.2-2函数:
对于给定区间[p,q]上
这(n+1)个节点和在这些点上的函数值,若函数满足:
①在每个子区间上,多项式的次数不超过3;
②,在[p,q]上连续;
③满足的插值条件。
则g(x)是函数f(x)关于n个节点xi处的三次样条插值函数。
代码如下:
Ps=spline(x,y,new_x);
%分段三次埃米尔插
%x是已知样本点的横坐标,y是已知样本点的纵坐标,
new_x是要插入处对应点的横坐标
3练习题
对下列数据进行插值,求出双周测得的数值:
分别用两种插值方法求出双周数据,然后绘出图形
代码如下:
load X.mat; %导入需要进行插值的数据,事先可将所需数据从excel
%中复制粘贴到matlab右侧区域中,保存为。mat文件
[n,m]=size(X);%得出几行几列的矩阵
x=X(1,:);%第一行元素为星期
P1=zeros(12,15);
P2=zeros(12,15);%生成两个12乘15的矩阵,用来存放插值形成后的数据
xlab={'周数','轮虫','溶氧','COD','水温','PH值','盐度',
'透明度','总碱度','氯离子','透明度','生物量'}; % 将图形的标题变为元胞数组存储其中
for i=1:n
y=X(i,:);
new_x=1:15;
Pp=pchip(x,y,new_x);%分段三次埃米尔插值函数
Ps=spline(x,y,new_x);%三次样条插值预测
subplot(4,3,i);%将所有图依次变现在4*3的一幅大图上
figure(1);%两次插值运算放入一张图上
plot(x,y,'r-',new_x,Pp,'b.-',new_x,Ps,'g.-')%设置样本图像的曲线
P1(i,:)=Pp;%将每一轮循环所得数值放入P1矩阵
P2(i,:)=Ps;%同上
xlabel(xlab{i});%给每一个图加上标题
end
legend('样本点','三次埃米尔特插值预测','三次样条插值预测',
'location','SouthEast')%加线条注释
disp('P1为')
disp(P1);
disp('P2为')
disp(P2)
最后插值后绘出12个指标,14个数据的图形为:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!