数模系列三 插值与拟合


注:插值与拟合是数模中最常用的方法。需要熟悉常用插值方法和其概念,负责代码的同学除此外还要熟悉常用的MATLAB插值拟合API,会绘制相应图像等

什么是插值与拟合

在工程和数学应用中,经常有这样一类数据处理问题,在平面上给定一组离散点列,要求一条曲线,把这些点按次序连接起来,称为插值。
曲线拟合是已知一组离散数据,选择一个较简单的函数(如多项式),在一定准则(如最小二乘准则)下,最接近这些数据。
如果已知一个较为复杂的连续函数y(x),x∈[a,b],要求选择一个较简单的函数 ,在一定准则下最接近 y(x ),就是所谓函数逼近。
插值:求过已知有限个数据点的近似函数。
拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义
下它在这些点上的总偏差最小。
插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二
者的数学方法上是完全不同的。而面对一个实际问题,究竟应该用插值还是拟合,有时
容易确定,有时则并不明显。

常用的插值与拟合方法

阅读https://blog.csdn.net/f2157120/article/details/80371214

插值方法的选择

低次采用拉格朗日插值法,连续性好;
高次为了避免拉格朗日插值法的龙格现象,采用三次插值法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQ2Cn6Ir-1577093365011)(http://treblez.me/wp-content/uploads/2019/12/捕获-2.png)]

插值函数实现

拉格朗日插值函数实现

Lagrange.m

function y0=Lagrange(x,y,x0)
n=length(x);
l=ones(1,n);
for k 1:n
    for j=1:n
        if j~=k
            l(k)=l(k)*(x0-x(j))/(x(k)-x(j));
        end
    end
end
y0=sum(y.*l)
end

例:

%定义一组离散的数据点
clear;clc; close all
x=[0 1 3 6 7 9 10];
y=[0 12.9 88.3 30.5 10.7 25.6 76.5];

k=1
for x0=0:0.1:10
    y0=Lagrange(x,y,x0);
    k=k+1;
end
%绘制拉格朗日插值曲线
x0=0:0.1:10;
plot(x0,y0)
hold on
scatter(x,y,'ro')
%显示原始的离散数据点

三次样条插值插值函数实现

x=0:10;
y=[2.51 3.30 4.04 4.70 5.22 5.54 5.78 5.40 5.57 5.70 5.80]
xx=linspace(min(x),max(x),200)    %在x上下界之间取200个插值节点
pp=csape(x,y,'comlete',[0.8,0.2]);
%分段三次样条插值,边界条件为左右端点的一阶导数为0.8和0.2
yy=ppval(pp,xx)
% ppval函数: 给出三次样条插值pp在x处对应的函数值。
plot(x,y,'ko',xx,yy,'k')

曲线拟合的线性最小二乘法

了解并会选择函数rk(x)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZUAW58q-1577093365014)(http://treblez.me/wp-content/uploads/2019/12/捕获-3.png)]

最小二乘法的matlab实现

x0=1990:7;
y0=[70 122 144 152 174 196 202];
plot(x0,y0,'*')
%根据图像选定y=ax+b作为拟合曲线
a=plotfit(x0,y0,1)
y97=polyval(a,1997)
y98=polyval(a,1998)

最小二乘优化

目标函数由若干个函数的平方和构成,把极小化这类函数的问题称为最小二乘优化问题。

推荐扩展阅读:司守奎 《数学建模算法与应用》 第五章,插值与拟合

发布了165 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/treblez/article/details/103669494