数学建模【插值与拟合】

一、插值与拟合简介

在数学建模过程中,通常要处理由试验、测量得到的大量数据或一些过于复杂而不便于计算的函数表达式,针对此情况,很自然的想法就是,构造一个简单的函数作为要考察数据或复杂函数的近似。插值和拟合就可以解决这样的问题。

给定一组数据,需要确定满足特定要求的曲线,如果所求曲线通过所给定有限个数据点,这就是插值。有时由于给定的数据存在测量误差,往往具有一定的随机性。因而,要求曲线通过所有数据点不现实也不必要。如果不要求曲线通过所有数据点,而是要求它反映对象整体的变化态势,得到简单实用的近似函数,这就是曲线拟合。

插值和拟合都是根据组数据构造一个近似函数, 但由于近似的要求不同,二者在数学方法上是完全不同的。而面对个实际问题,究竞应该用插值还是拟合,有时容易确定,有时并不明显。

由于插值和拟合是一种手段,并无绝对的适用赛题,也并不算是一种模型,故本篇没有适用赛题、模型流程、流程解析部分。后面将重于使用,分别介绍插值和拟合的操作。

二、插值

1.一维插值
①基本概念

已知未知函数在n+1个互不相同的观测点x0<x1<...<xn处的函数值(或观测值):

yi = f(xi) , i = 0, 1, ..., n

寻求一个近似函数(即近似曲线)中φ(x) ,使之满足

φ(xi) = yi, i = 0, 1, ..., n

即求一条近似曲线φ(x),使其通过所有数据点(xi, yi)  i = 0, 1, ..., n

对任意非观测点X(X ≠ xi, i = 0,1, ..., n),要估计该点的函数值f(X),就可以用φ(X)的值作为f(X)的近似估计值,即φ(X) ≈ f(X)。通常称此类建模问题为插值问题,而构造近似函数的方法就称为插值方法。

观测点xi(i = 0, 1, ..., n)称为插值节点,f(x)称为被插函数或原函数,φ(x)为插值函数,φ(xi) = yi称为插值条件,含xi(i = 0, 1, ..., n)的最小区间[a, b](a = min{xi}, b = max{xi})称为插值区间,X称为插值点,φ(X)为被插函数f(x)在X ∈ [a, b] 点处的插值。

这里对于多项式插值,拉格朗日插值、牛顿插值等方法理论部分不做介绍,有兴趣的同学自行查阅。

②函数使用
Ⅰinterp1函数

MATLAB中一维函数interp1的调用格式为

vq = interp1(x0, y0, xq, method, extrapolation)
  • x0:已知的插值节点

  • y0:对应x0的函数值

  • xq:欲求函数值的节点坐标

  • vq:求得的节点xq处的函数值

  • method:指定插值的方法,默认为线性插值。其值常用的有:

'nearest'最近邻插值
'linear'线性插值
'spline'三次样条插值,函数是二次光滑的
'cubic'立方插值,函数是一次光滑的

MATLAB2020A不提倡使用函数interp1,建议使用函数griddedInterpolant。

ⅡgriddedInterpolant函数

函数griddedInterpolant适用于任意维数的插值。

一维插值的调用格式为

F = griddedInterpolant(x, v, method, extrapolation)

计算对应的函数值的使用格式为

vq = F(xq)

n维插值的调用格式为

F = griddedInterpolant(x1, x2,..., xn, v, method, extrapolation)

计算对应的函数值的使用格式为

vq = F(xq1, xq2,..., xqn)
Ⅲcsape三次样条插值函数

三次样条插值还可以使用函数ecsape,csape的返回值是pp形式。求插值点的函数值,调用函数fnval。

pp = csape(x0, y0)使用默认的边界条件,即拉格朗日边界条件。

pp = csape(x0, y0, conds, valconds)中的conds指定插值的边界条件,详细见官网

利用pp结构的返回值,还可以计算返回值函数的导数和积分,命令分别为fnder,fnint,这两个函数的返回值还是pp结构。

调用格式函数功能
pp1 = csape(x0, y0)计算插值函数
pp2 = fnder(pp1)

计算pp1对应函数的导数,返回值pp2也是pp结构

pp3 = fnint(pp1)计算pp1对应函数的积分,返回值pp3也是pp结构
y = fnval(pp1, x)计算pp1对应的函数在x点的取值

2.二维插值
①基本概念

二维插值的基本概念和一维差不多,只不过曲线变成了曲面而已,不做赘述。

②网格数据的插值

已知m×n个节点(xi, yi, zij)(i = 1, 2,.., m; j = 1, 2, ..., n),且x1 <...< xm; y1 < ...< yn。求点(x, y)处的插值z。

Ⅰinterp2函数
z = interp2(x0, y0, z0, x, y, 'method')
  • x0,y0:m维和n维向量,表示插值节点

  • z0:n×m矩阵,表示对应插值节点函数值

  • x,y:一维数组,表示插值点。x与y应是方向不同的向量,即一个是行向量,另一个是列向量

  • z:矩阵,行数为y的维数,列数为x的维数,表示得到的插值

  • method:用法同上面的一维插值

如果是三次样条插值,可以使用函数griddedInterpolant和csape。函数girddedInterpolant前面已经介绍过。

Ⅱcsape函数
pp = csape({x0, y0}, z0, conds, valconds);
z = fnval(pp, {x, y})
  • x0,y0:分别为m维和n维向量

  • z0:m×n矩阵

  • z:矩阵,行数为y的维数,列数为x的维数,表示得到的插值

③散乱数据的插值

已知n个插值节点(xi, yi, zi)(i =1, 2, ..., n),求点(x, y)处的插值z。

Ⅰgriddata函数

函数griddata的调用格式为

ZI = griddata(x, y, z, XI, YI)
  • x,y,z:均为n维向量,指明所给数据点的横坐标、纵坐标和竖坐标

  • XI,YI:给定的网格点的横坐标和纵坐标

  • ZI:网格(XI, YI)处的函数值。XI与YI应是方向不同的向量,即一个是行向量,另一个是列向量

ⅡscatteredInterpolant函数

函数scatteredInterpolant的调用格式为

Fz = scatteredInterpolant(x0, y0, z0, Method, ExtrapolationMethod);
  • 返回值Fz是结构数组,相当于给出了插值函数的表达式

  • x0,y0,z0:分别为已知n个点的x,y,z坐标
  • Method:插值方法
  • ExtrapolationMethod:区域外部节点的外插方法

要计算插值点(x, y)处的值,调用Fz即可

z = Fz(x, y);

三、拟合

1.线性最小二乘法
①解线性方程组拟合参数

要拟合等式中的参数a1, a2, ..., am,把观测值代入等式,得到线性方程组

RA = Y

则A = pinv(R) * Y或简化格式A = R \ Y

②约束线性最小二乘解

在最小二乘意义下解约束线性方程组

即求解数学规划问题

求解上述问题调用函数lsqlin

x = lsqlin(C, d, A, b, Aeq, beq, lb, ub);
③多项式拟合

多项式拟合的函数为polyfit,调用格式为

p = polyfit(x, y, n) % 拟合n次多项式,返回值p是多项式对应的系数,排列次序为从高次幂系数到低次幂系数

计算多项式p在x处的函数值

y = polyval(p, x);
2.fittype和fit函数

函数fit需要和函数fittype配合使用,fittype用于定义拟合的函数类,fit进行函数拟合。fit既可以拟合一元或二元线性函数,也可以拟合一元或二元非线性函数。 这里介绍这两个函数的调用格式。

fittype的调用格式为

aFittype = fittype(libraryModeName) % 利用库模型定义函数类
aFittype = fittype(expression, Name, Value) % 利用字符串定义函数类
aFittype = fittype(linearModeTerm, Name, Value) % 利用基函数的线性组合定义函数类
aFittype = fittype(anonymousFunction, Name, Value) % 利用匿名函数定义函数类

函数fit的调用格式为

​fitobject = fit(x, y, aFittype) % x和y分别为自变量和因变量的观测值列向量,返回值fitobject为拟合函数的信息
fitobject = fit([x, y], z, aFittype) % [x, y]为自变量的观测值的两列矩阵,z为因变量的观测值列向量,这里是拟合二元函数
[fitobject, gof] = fit(x, y, aFittype, Name, Value) % 返回值gof为结构数组,给出了模型的一些检验统计量
3.非线性拟合

MATLAB非线性拟合的主要函数有fit和lsqcurvefit,fit函数使用很方便,但只能拟合一元和二元函数,lsqcurvefit可以拟合任意多个自变量的函数,并且可以约束未知参数的上界和下界,下面用例子讲解。

①fit函数

用下表数据拟合函数

x162674259
x249538582
y14.207739.362217.807711.831032.861816.962233.094111.1737
xy0 = d([1, 2], :)';
z0 = d(3, :)';
g = fittype('a * exp(b * x) + C*y^2', 'dependent' ,'z' , 'independent', {'x', 'y'});
[f, st] = fit(xy0, z0, g, 'StartPoint', rand(1,3));

求得z=6.193e的0.04353x次方+0.3995y²

拟合优度R² = 0.9995,拟合的剩余标准差RMSE = 0.2970,拟合效果很好。

②lsqcurvefit函数

要拟合函数y = f(θ, x),给定x的观测值xdata,y的观测值ydata,求参数向量θ,使得误差平方和最小。

lsqcurvefit函数的调用格式为

theta = lsqcurvefit(fun, theta0, xdata, ydata, lb, ub, options)
  • fun:定义函数f(θ, x)的M函数或匿名函数
  • thata0:θ初始值
  • lb,ub:参数θ的下界和上界
  • options:设置计算过程的一些算法
  • theta:拟合参数θ的值

本篇只是很浅显地介绍了各个函数,每个函数的具体用法和参数设置有兴趣的同学可以到官网查询。如果对其中原理理论部分感兴趣也可以查文献搜索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速启动-后台管理系统

目录 Gitee人人开源 后端快速启动 1.clone仓库到本地 2.初始化数据库 3.更改数据库连接 4.启动项目验证 前端快速启动 1.克隆仓库 2.vsCode打开 3.控制台npm install 4.验证测试 时代已然不同&#xff0c;后台管理也可以使用脚手架方式快速启动。 Gitee人人开源 地…

CGLib FastClass机制:动态代理的性能优化之选

确实&#xff0c;CGLib在运行时生成子类并编译这些子类会涉及到一些性能开销。但是&#xff0c;这个开销通常被认为是在可接受的范围内的&#xff0c;因为它是在代理对象创建时发生的&#xff0c;而不是在每次方法调用时。下面是对CGLib使用FastClass机制生成子类的一些解释&am…

京东 h5st 4.1 4.2 4.3 4.4逆向算法分析、API接口、商品详情、价格API接口(2024-02-26)

一、最新京东h5st 4.4逆向 1、h5st 4.4的位置 搜索关键字h5st很快找到&#xff1a; &#xff08;h5st 4.4所在位置&#xff09; 2、签名代码如下&#xff1a; , r JSON.stringify(a), c (new Date).getTime() || "1", d {appid: "pc-item-soa",functio…

洛谷C++简单题小练习day21—梦境数数小程序

day21--梦境数数--2.25 习题概述 题目背景 Bessie 处于半梦半醒的状态。过了一会儿&#xff0c;她意识到她在数数&#xff0c;不能入睡。 题目描述 Bessie 的大脑反应灵敏&#xff0c;仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码&#xff08;0…9&#x…

短链接的背后故事:为互联网用户带来的便捷与安全

title: 短链接的背后故事&#xff1a;为互联网用户带来的便捷与安全 date: 2024/2/26 14:58:58 updated: 2024/2/26 14:58:58 tags: 短链接技术起源长URL问题解决链接分享便利性链接跟踪与分析链接管理效率提升链接安全保障应用领域广泛 一、短链接的起源 短链接是一种将长UR…

WampServer环境下载安装并结合内网穿透实现远程访问管理界面

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

【前端】一文学懂HTML与CSS选择器基础

文章目录 1. 前言与准备工作1.1 前言1.2 准备工作1.2.1 工具选用1.2.2 VSCode下载与配置 2. 基本概念2.1 通过HelloWorld理解HTML基本概念2.1.1 HTML是什么2.1.2 如何理解"超文本"?2.1.3 HTML基础结构2.1.3 学习第一组标签&#xff1a;段落p与标题h1~h6 2.2 CSS基础…

(202402)多智能体MetaGPT入门1:MetaGPT环境配置

文章目录 前言拉取MetaGPT仓库1 仅仅安装最新版2 拉取源码本地安装MetaGPT安装成果全流程展示 尝试简单使用1 本地部署大模型尝试&#xff08;失败-->成功&#xff09;2 讯飞星火API调用 前言 感谢datawhale组织开源的多智能体学习内容&#xff0c;飞书文档地址在https://d…

大语言模型系列-微调技术

前言 以BERT模型为代表的“预训练语言模型 下游任务微调”训练模式成为了自然语言处理研究和应用的新范式。此处的下游任务微调是基于模型全量参数进行微调&#xff08;全量微调&#xff09;。 以 GPT3 为代表的预训练语言模型&#xff08;PLM&#xff09;参数规模变得越来越…

实习日志30

概要 高拍仪硬件通信原理&#xff0c;WebSocket源码解析&#xff08;JavaScript&#xff09; WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据…

【数据库的介绍、分类、作用和特点】的讲解

数据库的介绍、分类、作用和特点 1. 数据库2. 介绍3. 分类3.1 按数据模型分类3.2 按用户数量分类3.3 按数据分布分类 4. 作用5. 特点5.1 特定类型的数据库特点 1. 数据库 数据库是用于存储、管理、处理和检索数据的系统&#xff0c;以下是基于不同维度的数据库的介绍、分类、作…

java RMI(远程方法调用)

java RMI(Remote Method Invocation)远程方法调用。为什么称为远程方法调用呢&#xff1f;因为是两个JVM间进行通讯。两个JVM一个作为服务提供端&#xff0c;另一个作为服务调用端。 首先需要定义一个远程调用的接口&#xff0c;这个接口要继承Remote接口。并且远程接口方法要…

DWT硬件延时

DWT硬件延时 文章目录 DWT硬件延时软件&硬件延时方案软件延时硬件延时方案 DWT硬件延时方案DWT硬件延时方案DEMCR寄存器DWT硬件延时方案实现延时初始化&#xff1a;US延时&#xff1a;MS延时&#xff1a; 软件&硬件延时方案 软件延时 static void Delay(uint32_t cou…

Leetcode刷题笔记题解(C++):6. Z 字形变换

思路&#xff1a;遍历时候需要更新步进长度 到达0行的时候步进长度为1&#xff1b;到达最后一行numRows-1行的时候步进长度为-1&#xff1b;代码如下所示&#xff1a; class Solution { public:string convert(string s, int numRows) {//如果字符串长度为1或者所给行数为1 …

vscode更新至1.86版本后,ssh远程连接服务器出现异常

问题 you are connected to an OS version that is unsupported by Visual Studio Code 你已连接到不受Visual Studio Code支持的OS 版本 原因是vscode更新到1.86版本后要求远程连接服务器的内核版本和库版本需要符合下面条件。 解决方法 因此有两种方法解决 1.更新服务器…

[数据集][目标检测]课堂行为数据集VOC+YOLO格式671张6类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;671 标注数量(xml文件个数)&#xff1a;671 标注数量(txt文件个数)&#xff1a;671 标注类别…

开源MBG----renrenGenerator

目录 1.克隆项目到本地 2.编辑数据库连接 3.定义生成的代码模版 4.验证生成结果 5.多说一句 项目简介&#xff1a;人人开源项目的代码生成器&#xff0c;可在线生成entity、xml、dao、service、vue、sql代码&#xff0c;减少70%以上的开发任务。 项目地址&#xff1a;ren…

Floor报错原理详解+sql唯一约束性

目录 floor报错原理 唯一性约束 主键约束&#xff1a; 创建约束的形式 删除约束 删除唯一性约束&#xff08;UNIQUE Constraint&#xff09; 在SQL Server中&#xff1a; 在MySQL中&#xff1a; 在PostgreSQL中&#xff1a; 删除主键约束&#xff1a; floor报错原理 …

免费SSL证书申请流程及地址

1&#xff0c;选择证书提供商&#xff1a;有许多机构提供免费的SSL证书&#xff0c;如JoySSL。选择一个可靠的提供商是第一步。 免费SSL证书申请地址https://www.joyssl.com/certificate/select/free.html?nid5 2&#xff0c;验证域名&#xff1a;根据提供商的要求&#xff…

力扣4题:寻找两个正序数组的中位数

【题目描述】 &#xff08;困难&#xff09;给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平…