数学建模第七天:数学建模算法篇之插值及MATLAB实现
目录
一、前言
1、引例
2、拟合定义
3、拟合与插值的关系
二、拟合
1、线性最小二乘法求解
①思路
②解法
2、MATLAB对线性最小二乘拟合的实现
①函数说明
②求解例题
3、MATLAB实现非线性曲线拟合
①lsqcurvefit函数
②代码求解
4、MATLAB实现非线性最小二乘拟合
①lsqnonlin函数
②代码求解
一、前言
1、引例
话不多说,我们还是老规矩,上例题!
伍老师当了这么多篇文章的主角,今天的主角终于成为了伍老师的闺蜜汪老师。汪老师的零花钱一般在月初发,但是,汪老师一不小心多网购了一点,四月的最后一周只剩下了300块钱。已知这一周的前四天开销如下:
4月24号:踌躇满志的想要去省钱,当天花销共计35块
4月25号:感觉最后一周的第一天太克制自己了,多花一点,当天花销共计45块
4月26号:陪男朋友出去玩,多点了一杯奶茶,当天花销共计48块、
4月27号:突然发现前两天花的钱有点多了,克制一下,当天花销共计38块
那么,请你预测一下汪老师的花销函数,并且估计,300块汪老师能否撑过这一周?
2、拟合定义
曲线拟合问题是指:已知平面上n个点,i=1,2,3……n,
互不相同。寻求函数f(x),使f(x)在某种准则下与所有数据点最为接近,即曲线拟合得很好。比如说我们高中学习过电阻与温度相关,我们测量某几个温度下的电阻,做出一条线,这就是我们拟合出来的函数图像:

曲线拟合一般需要解决如下两个问题:
①线型的选择;
②线型中参数的计算
其中,问题①是拟合问题的关键与难点,线性拟合中参数的计算可以使用最小二乘法,二非线性拟合参数的计算则要应用GN迭代法。
3、拟合与插值的关系
相同点:给定一批数据点,需确定满足特定要求的曲线或曲面
不同点:若要求所求曲线(面)通过所给所有数据点,就是插值问题;不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。像上篇文章中出现过Runge现象,当不小于7次时,波动十分显著,所以我们需要用拟合的方法去构建相关的函数。小编借用龙门飞甲里的几句台词,来说明拟合的作用:
“拟合算什么东西?”
“你问我拟合算什么东西,现在我就来告诉你。插值算不了的值由我拟合来做,插值画不了的图我画,插值写不了的代码我写。一句话,拟合建不了的模我要建。拟合建不了的模我更要建!这就是西厂!”
函数插值与曲线拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者在数学方法上是完全不同的。
二、拟合
1、线性最小二乘法求解
①思路
第一步:先选定一组函数 ,
,……,
, m<n, 令
( 1 )
其中,
, …,
为待定系数。
第二步: 确定,
, …,
的准则(最小二乘准则): 使n个点
与曲线 y=f(x) 的距离
的平方和最小

问题归结为,求 ,
,……,
,使
最小
②解法
我们把方程个数大于未知量个数的方程组称为超定方程组:

我们可以把上述超定方程组简写为矩阵乘法形式:

超定方程组一般是不存在解的矛盾方程组,所以我们定义如果有向量a使得式子(4)达到最小, 则称a为上述超定方程组的最小二乘解。
这里补充一个定理:当可逆时,超定方程组(3)存在最小二乘解,且即为方程组
2、MATLAB对线性最小二乘拟合的实现
①函数说明
调用函数:
a=polyfit(x,y,m)
参数说明:
a:输出拟合多项式系数 a=[a1, …,am , am+1] (数组))
x、y:输入同长度的数组x,y,为已知的点坐标
m:拟合多项式次数
作用:对多项式拟合
额外说明:
对超定方程组,可以用a=R\y得到最小二乘意义下的解。
多项式在x处的值y可用y=polyval(a,x)命令计算。
②求解例题
如果使用一次函数拟合,则代码为:
x=[1,2,3,4];
y=[35,45,48,38];
A=polyfit(x,y,1)
x1=1:1:7
z=polyval(A,x1)
plot(x,y,'o',x1,z,'r')
求出的结果为:


所以预计最后三天汪老师会花费44.5+45.7+46.9=137.1元,算上前面四天的消费,一共303.1元,故汪老师三百块撑不过这一周,需要找伍老师接三块一毛钱。
3、MATLAB实现非线性曲线拟合
①lsqcurvefit函数
已知输入数据点和输出数据点,即x=(xdata1,xdata2,……,xdatan),y=(ydata1,ydata2,……ydatan),并且还知道输入数据点与输出数据点的关系为ydata=F(x,xdata),MATLAB里有lsqcurvefit函数能够对曲线进行拟合,求得x使得下式成立:

函数输出格式:
x = lsqcurvefit (‘fun’,x0,xdata,ydata);
x =lsqcurvefit(‘fun’,x0,xdata,ydata,options);
x=lsqcurvefit(‘fun’,x0,xdata,ydata,options,’grad’);
参数说明:
其中x0代表初始解向量,option代表优化方式,xdata与ydata满足ydata=F(x,xdata),fun代表一个事先建立的定义函数F(x,xdata) 的m文件, 自变量为x和xdata。
②代码求解
加入我们知道汪老师最后一周的花销函数为,请用lsqcurvefit函数拟合,并且求出参数a、w、k、b。
我们先定义一个花销函数expense.m,内容如下:
function F=expense(x,xdata);F=-x(1)*cos(x(2)*xdata)+x(3)*xdata+x(4)% x(1)=a; x(2)=w,x(3)=k,x(4)=b;
再输入相关命令:
xdata=[1,2,3,4];
ydata=[35,45,48,38];
x0=[0.1,0.1,0.1,0.1];x=lsqcurvefit('expense',x0,xdata,ydata)xnew=1:1:7;F=expense(x,xnew)
我们就能算出,a、w、k、b四个参数的值以及汪老师这一周每天的花费,如下:

再计算一下这一周的后三天汪老师会花费48.07+48.43+46.6=143.1,而按照这个模型这一周共计花费309.1元,看来300是不够的,还需要多找伍老师借9.1块钱。
4、MATLAB实现非线性最小二乘拟合
①lsqnonlin函数
已知输入数据点和输出数据点,即x=(xdata1,xdata2,……,xdatan),y=(ydata1,ydata2,……ydatan),用以求含参量x的向量值函数f(x),使得下式的值最小:

其中fi(x)=f(x,xdatai,ydatai)=F(x,xdatai)-ydatai。
函数格式:
x=lsqnonlin(‘fun’,x0)
x=lsqnonlin(‘fun’,x0,options)
x= lsqnonlin('fun’,x0,options‘grad’)
参数说明:
其中x0代表初始解向量,option代表优化方式,fun代表一个事先建立的定义函数F(x) 的m文件, 自变量为x。
②代码求解
仍然以刚刚那道题为例,我们先定义一个花销函数expense.m,内容如下:
function F=expense(x);
xdata=[1,2,3,4];
ydata=[35,45,48,38];F=-x(1)*cos(x(2)*xdata)+x(3)*xdata+x(4)% x(1)=a; x(2)=w,x(3)=k,x(4)=b;
再输入代码:
x0=[0.1,0.1,0.1,0.1];x=lsqnonlin('expense',x0)xnew=1:1:7;F=expense(x)
就能算出各个参数的值!结果与非线性曲线拟合的结果一致,这里就不放相应的结果啦!
好的,本期的数学建模的课程就到这里啦,不知道小编的文章对各位观众老爷们有没有帮助呢?麻烦大家给小编点一个免费的小心心好吗?
相关文章:
数学建模第七天:数学建模算法篇之插值及MATLAB实现
目录 一、前言 1、引例 2、拟合定义 3、拟合与插值的关系 二、拟合 1、线性最小二乘法求解 ①思路 ②解法 2、MATLAB对线性最小二乘拟合的实现 ①函数说明 ②求解例题 3、MATLAB实现非线性曲线拟合 ①lsqcurvefit函数 ②代码求解 4、MATLAB实现非线性最小二乘拟…...
RUST 每日一省:生命周期作用域
生命周期 一个变量的生命周期就是它从创建到销毁的整个过程。 作用域 我们声明的每个变量都有作用域。作用域其实是变量和值存在的环境。作用域是由一对花括号表示的。例如,使用块表达式会创建一个作用域,即任何以花括号开头和结尾的表达式。此…...
【过程8】——能量守恒视角总结感受
一、背景 另一个角度的看到,观望着过程中自己曾经类似的经历(小舅子的工作)。 时间久了,经历多了,感悟会更加的充实;最近自己对于人在维持能量的过程中也有很多的感悟,一并做一下总结 二、过程 1.人为什么天性不愿意…...
kong(4):限流配置
Kong 提供了 Rate Limiting 插件,实现对请求的限流功能,避免过大的请求量过大,将后端服务打挂。 Rate Limiting 支持秒/分/小时/日/月/年多种时间维度的限流,并且可以组合使用。例如说:限制每秒最 多 100 次请求&…...
人脸识别 Face Recognition 入门
人脸识别 Face Recognition 入门概述 总述传统特征方法深度学习方法损失函数改进基于欧几里德和距离的损失基于角度/余弦边距的损失SoftMax 损失及其变体 一级标题二级标题二级标题二级标题 找论文搭配 Sci-Hub 食用更佳 💪 Sci-Hub 实时更新 : https://tool.yovisu…...
【AI绘画】Midjourney的使用及程序示例
Midjourney 1.背景2.Midjourney的原理3.Midjourney的使用方法4.Midjourney的示例代码 1.背景 Midjourney 是一款基于深度学习的图像转换工具,其可以将一张图像转换成具有不同风格的图像,例如将一张照片转换成卡通风格的图像。Midjourney 基于 TensorFlow…...
无公网IP?教你在外远程访问本地wamp服务器「内网穿透」
目录 前言 1.Wamp服务器搭建 1.1 Wamp下载和安装 1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册 2.1 本地网页发布 2.2 Cpolar云端设置 2.3 Cpolar本地设置 3. 公网访问测试 4. 结语 前言 软件技术的发展日新月异,各种能方便我们生活、工作和娱乐的新…...
leetcode 628. 三个数的最大乘积
题目描述解题思路执行结果 leetcode 628. 三个数的最大乘积 题目描述 三个数的最大乘积 给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1: 输入:nums [1,2,3] 输出:6 示例 2&…...
fork函数如何创建进程,exit/_exit函数如何使进程终止的详细分析与代码实现
🎊【进程通信与并发】专题正在持续更新中,进程,线程,IPC,线程池等的创建原理与运用✨,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列…...
重置电脑时提示“缺少所需的驱动器分区”怎么办?
当您启动Windows 10电脑并收到“您的电脑/设备需修复”这个消息提示时,您会马上尝试修复电脑,如果您这样做了,您可能会收到一个“安装Windows的驱动器已被锁定”的信息。如果您尝试重置您的电脑,您可能会收到一条提示,…...
在KylinV10安装Dm8
前言 因为近期,业外和几个朋友想搞点有趣的项目玩玩,既然不以盈利为主,就> 主推国产化,所以这篇记录一下,我在KylinV10安装dm8.最近真的很忙,要负责专研一下国产化工具开发的事,还要负责tb级…...
「SQL面试题库」 No_46 交换工资
🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试࿰…...
SLAM论文速递【SLAM—— RDS-SLAM:基于语义分割方法的实时动态SLAM—4.24(1)
论文信息 题目: RDS-SLAM:Real-Time Dynamic SLAM Using Semantic Segmentation Methods RDS-SLAM:基于语义分割方法的实时动态SLAM论文地址: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber9318990发表期刊: IEEE Access ( Volum…...
OJ练习第82题——填充书架
填充书架 力扣链接:1105. 填充书架 题目描述 给定一个数组 books ,其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。 按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。 先选几本书放在书架…...
OHOS IDE和SDK的安装方法
参照OpenHarmony应用开发环境安装流程,下载安装OHOS的IDE,过程中需要全程联网。 IDE,安装至D:\Tools\Huawei\DevEcoStudio。 IDE安装成功之后,按照提示下载安装HOS和OHOS的SDK。 nodejs,安装至D:\Tools\Huawei\nodejs…...
New Year Garland(计数类DP)
New Year Garland 题意 用m种颜色的球装饰n层的圣诞树,圣诞树的第i层由 l i l_{i} li个彩球串成,且同一层相邻的球颜色不同,相邻的层之间彩球颜色的集合不同,问有多少种方案,对p取模。 分析 首先先计算每一…...
32岁阿里P7,把简历改成不知名小公司,学历改成普通本科,工作内容不变,投简历全挂!...
hr靠什么来招人? 一位猎头讲述了自己和朋友打赌的故事: 朋友在阿里云,32岁,P7,他把简历上的公司改成不知名,学历改成普通本科,工作内容不变,结果投其他公司(比如京东&…...
从三室心脏MRI影像检测主动脉瓣病变
Detecting Aortic Valve Pathology from the 3-Chamber Cine Cardiac MRI View 摘要 背景 心脏磁共振(CMR)是量化心脏容量、功能和血流量的金标准。定制的MR脉冲序列定义了对比机制,采集几何形状和定时,可以在CMR期间应用,以实现独特的组织…...
【JavaWeb】JavaScript
1、JavaScript 介绍 Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。 JS 是 Netscape 网景公司的产品,最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。 JS 是弱…...
Apache Doris 1.2.4 Release 版本正式发布|版本通告
亲爱的社区小伙伴们,我们很高兴地宣布,Apache Doris 于 2023 年 4 月 27 日迎来 1.2.4 Release 版本的正式发布!在 1.2.4 版本中,Doris 团队已经修复了自 1.2.3 版本发布以来近 150 个问题或性能改进项。同时,1.2.4 版…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
