数学建模--插值算法和拟合算法

devtools/2024/11/19 22:37:37/

目录

1.插值法的概念

2.拉格朗日插值&牛顿插值

3.埃尔米特插值

 4.三次样条插值

 5.使用上面的方法解决短期预测问题

6.插值和拟合的区别

7.一个拟合的案例介绍

8.matlab求解最小二乘

9.如何评价拟合的好坏


1.插值法的概念

简单的讲,就是根据这个已知的几个点坐标,求解出来一个函数的解析式,这个函数叫做插值函数,求解这个插值函数的方法就是插值法;

2.拉格朗日插值&牛顿插值

这两个都是经典的插值算法,我们在学习这个数值分析课程的时候,讲解到这个插值算法的时候,一般都会介绍这个拉格朗日和牛顿插值,这个里面有这个差分,差商的相关概念,以及这个一阶差商,二阶差商等等这些,这个都是概念和计算,我们求解都会用到;

但是由于这两个插值方法存在龙格现象:在两端的波动比较大,会产生明显的震荡,因此数学建模的时候基本上不会用到,因此我在这里就不进行说明;

实际上,我们在数学建模里面使用的是这个三次埃尔米特插值和三次样条插值,这两个也是我们接下来会重点介绍的;

3.埃尔米特插值

直接使用这个埃尔米特插值得到的这个多项式的次数会很高,存在这个龙格现象,因此一般使用的都是三次埃尔米特插值;

三次埃尔米特插值直接调用matlab里面的函数即可:

这个里面需要注意的就是这个pchip函数就是去进行三次埃尔米特插值函数求解的工具包,这个函数有三个参数,第一个参数就是我们的这个x变化范围,第二个就是y的变化范围,第三个就是需要我们进行求解的这个插入处的横坐标;

调用这个plot函数进行绘图的时候,这个里面的参数也是分为两个部分进行分析的:

第一部分前面的三个就是x,y和对应的这个绘图说明,这个实际上绘制的是几个点,因为没有指定步长的时候,这个里面的步长就是1,在这个区间里面,会选择很少一部分的数据;

第二个就是新的x,我们的pchip函数的返回值,和这个新的预测得到的y,因为这个pchip就是根据这个新的x得到的y,所以这个p代表的就是根据这个new_x得到的y值;

 4.三次样条插值

我们直接上题,还是上面的这个类似于正弦函数图像的绘制,我们使用两个方法,查看一下两个插值算法的区别,以及这个精确性;

我们通过观察就可以直观的发现,这个三次样条插值似乎更加接近这个真实的正弦sin函数图像;

% 三次样条插值和分段三次埃尔米特插值的对比
x = -pi:pi; 
y = sin(x); 
new_x = -pi:0.1:pi;
p1 = pchip(x,y,new_x);   %分段三次埃尔米特插值
p2 = spline(x,y,new_x);  %三次样条插值
figure(2);
plot(x,y,'o',new_x,p1,'r-',new_x,p2,'b-')
legend('样本点','三次埃尔米特插值','三次样条插值','Location','SouthEast')   %标注显示在东南方向% 说明:
% LEGEND(string1,string2,string3, …)
% 分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。
% ‘Location’用来指定标注显示的位置

 5.使用上面的方法解决短期预测问题

根据最近10年的人口数据,预测未来的1-2年的人口数量;

%人口的具体数据作为纵坐标
population=[133126,133770,134413,135069,135738,136427,137122,137866,138639, 139538];
%年份作为横坐标
year = 2009:2018;
p1 = pchip(year, population, 2019:2021)  %分段三次埃尔米特插值预测
p2 = spline(year, population, 2019:2021) %三次样条插值预测%这个主要是因为前面绘制了图形,但是在这个里面是没有用的,如果我们在一次性运行的文件里面需要进行多次绘图,这个时候就需要进行这个figure的说明,否则就会覆盖;
figure(4);
plot(year, population,'o',2019:2021,p1,'r*-',2019:2021,p2,'bx-')
%这个里面的两个英文单词显示的是这个图例的显示位置
legend('样本点','三次埃尔米特插值预测','三次样条插值预测','Location','SouthEast')

6.插值和拟合的区别

上面的这个插值就是找出来一个函数的表达式曲线,让这个曲线经过这个已知的样本点,这个函数的表达式曲线是经过每一个点的;

拟合的思想就是如果这个样本点的个数很多的话,这个表达式的次数很高,这个就会产生龙格现象,因此拟合函数不会经过所有的样本点,而是找到一条曲线,让这个曲线几乎接近所有的样本点,即使有误差也会让这个误差控制的很小;

7.一个拟合的案例介绍

下面这个很多的样本点的数据,我们根据这个现有的样本点去求解出来一个拟合曲线,这个就是我们学习的最小二乘法的思想;

我们导入这个数据,把这个所有的已知的样本点在这个图形上面展示出来,然后通过观察进行这个拟合曲线的求解;

我们观察发现这个可以使用一次y=kx+b函数进行拟合,这个时候我们就需要求求解这个表达式;

上面这个就是对于最小二乘法的几何解释,我们不使用这个绝对值的定义,因为这个绝对值不方便我们继续求导,不使用3次方,因为这个误差的计算,如果是3次方的话这个正负就会被抵消掉,因为有的样本点是在我们的拟合曲线的上面,有的是在下面,使用3次方就会让这个正负抵消掉;

我们也不会使用4次方,因为如果这个样本点里面有极端的异常点,这个点和我们的对应的你个拟合曲线上面的点差很远,这个时候计算四次方就会增大这个偶然的误差,对于我们的最后结果造成干扰;

综上所述,我们使用这个样本点和拟合点的插值平方和进行拟合;

8.matlab求解最小二乘

代码说明

  1. load进行的是这个已知的数据的导入;
  2. k,b就是根据这个公式进行写的,里面的这个sum是进行的求和的函数,注意的是这个里面要使用点乘运算(向量之间的运算);
  3. hold on是在原来的基础上面绘制:原来的基础就是这个每一个样本点,因为我们的文件里面先绘制这些样本点,再去绘制这个拟合的曲线,因此使用hold on,意思就是在这个样本点基础上绘制曲线;
  4. grid on显示网格线,方便我们查看这个样本点和我们实际的拟合曲线的对应的点的误差大小;
  5. 我们想要把这个拟合曲线画出来,使用这个fplot函数,这个f就是我们的函数解析式,前面的@这个这个里面的x表示这个解析式里面的x是我们研究的变量;
  6. fplot里面的第一个参数就是我们的f解析式,第二个参数表示这个绘制的拟合曲线的范围,是在2.5-7这个范围进行绘制的;
  7. 最后一行是对于这个图例的内容和方向的说明;

9.如何评价拟合的好坏

这个里面有拟合优度,误差平方和,回归平方和等概念,其中这个拟合优度仅仅对于线性函数适用,不可随意使用,下面写出来了这个拟合优度和SSE和SST的关系:

上面说了这个拟合优度是对于这个线性函数使用的,这个线性函数不是我们简单认为的y=kx+b这样的,我们认为的这个叫做对于变量的线性,还有这个对于参数的现象,我们的这个拟合优度对于线性(线性于参数)函数适用,下面有这个具体的说明和实例:

案例说明:这个下面的案例里面虽然这个x有2次方的现象,但是这个参数是线性的,参数就是这个β1这样的,下面的那两个非线性是因为a,b参数不是线性(不能乘积和组合) 

 

代码说明 拟合优度代码:就是带入计算,y_hat就是我们公式里面的yi,这个里面的y就是公式里面的y带上尖括号的,表示的是这个对应的曲线上面的拟合值;

 


http://www.ppmy.cn/devtools/104763.html

相关文章

线性查找表的应用:用户登录注册程序

线性查找表是很简单的数据结构和算法。网站的用户登录注册时是基本的功能。本文首先给出线性查找表的基本实现,然后给出在用户登录注册的程序流程图,并将线性查找表应用到用户查询这一具体任务,并基于 Python 语言在控制台实现用户注册、登录…

sqlite3 db.configure方法详解:设置项与默认值

在Node.js环境中,sqlite3库为开发者提供了一个与SQLite数据库进行交互的简洁API。除了基本的数据库操作外,sqlite3还允许开发者通过db.configure方法来配置数据库的一些底层参数和行为。本文将深入解析db.configure方法,包括其API函数定义、所…

MyBatis 源码解析:Environment 与 DataSource 配置实现

前言 在 MyBatis 框架中,Environment 和 DataSource 是配置管理的核心部分。Environment 负责管理不同的运行环境(如开发、测试、生产环境),而 DataSource 则管理数据库连接的配置和管理。理解这两个组件的工作原理有助于我们更好…

线程池在接受到30个比较耗时的任务时的状态,在前面30个比较耗时的任务还没执行完成的情况下,再来多少个任务会触发拒绝策略?

目录 一、提出问题 二、解答 问题 1: 线程池在接受到30个比较耗时的任务时的状态 问题 2: 在前面30个比较耗时的任务还没执行完成的情况下,再来多少个任务会触发拒绝策略? 总结 一、提出问题 我们首先自定义一个线程池: new ThreadPoo…

【开端】基于nginx部署的具有网关的web日志分析

一、绪论 基于nginx部署的具有网关的web日志分析,我们可以分析的日志有nginx的access.log ,网关的日志和应用的日志 二、日志分析 1、nginx日志 参数 说明 示例 $remote_addr 客户端地址 172.17.0.1 $remote_user 客户端用户名称 -- $time_lo…

【零知识证明】Groth16

一 相关介绍 1 Groth16 Groth16是一种用于零知识证明系统中的简洁非交互式知识论证(SNARK)协议,是一种表示计算的方式,在算术电路上操作,使用加法和乘法门。使用配对友好的椭圆曲线来实现高效的证明生成和验证。 Groth16的主要特点包括: …

机器学习之实战篇——预测二手房房价(线性回归)

机器学习之实战篇——预测二手房房价(线性回归) 前言数据集和实验文件下载相关文章推荐实验过程导入相关模块数据预处理手动梯度下降训练使用scikit-learn随机梯度下降 前言 实验中难免有许多缺陷和错误,望批评指正! 数据集和实验文件下载 …

Python进阶————面向对象高级

面向对象高级 前言一、继承1.1. 单继承1.2. 多继承1.3. 方法重写1.4. 子类调用父类方法1.4.1 父类名.父类方法名()1.4.2 super().父类方法名() 1.5. 多层继承 二、封装2.1. 私有属性2.2. 私有方法 三、多态3.1. 多态的条件3.2. 多态的定义 四、面向对象的其他特性4.1. 对象属性…