当前位置: 首页 > news >正文

清风数学建模——拟合算法

拟合算法

文章目录

  • 拟合算法
      • 概念
    • 确定拟合曲线
      • 最小二乘法的几何解释
      • 求解最小二乘法
      • matlab求解最小二乘法
      • 如何评价拟合的好坏
      • 计算拟合优度的代码

概念

在前面的篇幅中提到可以使用插值算法,通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题。一是若样本点过多,那么多项式的次数过高会造成龙格现象;二是为了避免龙格现象而通过分段的思想求得拟合曲线,但这样会导致曲线函数非常复杂。

针对以上问题,在拟合问题中,不需要曲线一定经过给定的点。拟合问题的目标是寻求一个函数(曲线),而该函数尽可能设置得较为简单,使得该曲线在某种准则下与所有的数据点最为接近,即只要保证误差足够小即可,(最小化损失函数),这就是拟合是思想。

确定拟合曲线

给定一组数据[x,y],找出y和x之间的拟合曲线

image-20230811201338259

在matlab上通过画图得出这组数据对应的图像

plot(x,y,'o');

image-20230811205402341

拟合一个曲线去接近样本点,这里我用一个简单的拟合曲线y=kx+b。现在的问题是,k和b取何值时,样本点和拟合曲线最接近。

最小二乘法的几何解释

image-20230811210132216

  • 第一种定义有绝对值,后续不容易求导,因此计算较复杂。所以我们往往使用第二种定义,这正是最小二乘法的思想
  • 我们也不使用三次方,因为三次方计算样本点到拟合曲线的距离会出现负数,那么该距离就会正负抵消
  • 我们也不使用四次方,使用4次方时,若出现某个异常值离曲线较远,那么该拟合曲线受到的影响较大

image-20230811210708976

求解最小二乘法

image-20230811210825318

最终落脚到的两个公式:k</sup>和b<sup>推导公式

  • 该公式通过对k和b一介求导,然后分离系数所得

matlab求解最小二乘法

image-20230811211416247

根据公式不难得出代码

plot(x,y,'o');
xlabel("x");
ylabel("y");
n=size(x,1);%% 数据的个数
k=(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x));
b=(sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x));
hold on;%% 写上这句后续可以继续在之前的图形上画图形
grid on;%% 图形显示网格线
f=@(x) k*x+b; %% f=kx+b是匿名函数,该函数图形不需要另外传参数也能形成图形
fplot(f,[2.5,7]);
legend('样本数据','拟合函数','location','southeast');
  1. f函数是匿名函数,该函数图形不需要另外传参数也能形成图形。在matlab中画出图形需要传参。比如正常情况下f函数需要传参x否则不能画出图形,而匿名函数系统会根据需求自己给出一定范围的参数以得画出图形

匿名函数的基本用法

handle = @(arglist) anonymous_function
  • 其中handle为调用匿名函数时使用的名字。

  • arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔。

  • anonymous_function为匿名函数的表达式。

  • 注意输入参数和表达式之间要用空格

  1. fplot可用于画出匿名一元函数的图形

基本用法

fplot(f,xinterval) 
  • 将匿名函数f在指定区间xinterval绘图。xinterval = [xmin xmax] 表示定义域的范围

image-20230811214612764

如何评价拟合的好坏

image-20230811214710021

  • 根据SST、SSE、SSR可以证明:
  1. SST=SSE+SSR
  2. 拟合优度:0<=1-SSE/SST<=1;而SSE误差平方和越小,拟合优度R2越接近1。误差越小说明拟合的越好
  3. 注意:拟合优度R2只能用于拟合函数是线性函数,若拟合函数是其他函数,直接看误差平方和即可,SSE越小,说明拟合度越好
  4. 线性函数是指在函数中,参数仅以一次方出现,且不能乘以或除以其他任何的参数,并不能出现参数的复合函数形式。该参数不是指自变量x。比如y=kx+b,该参数指的是区别于自变量x和因变量y以外的参数k和b。

image-20230811221145242

计算拟合优度的代码

plot(x,y,'o');
xlabel("x");
ylabel("y");
n=size(x,1);%% 数据的个数
k=(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x));
b=(sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x));
hold on;%% 写上这句后续可以继续在之前的图形上画图形
grid on;%% 图形显示网格线
f=@(x) k*x+b; %% f=kx+b是匿名函数,该函数图形不需要另外传参数也能形成图形
fplot(f,[2.5,7]);
legend('样本数据','拟合函数','location','southeast');
y_hat=k*x+b;
SSR=sum((y_hat-mean(y)).^2); % 回归平方和
SSE=sum((y-y_hat).^2); % 误差平方和
SST=sum((y-mean(y)).^2); % 总体平方和
disp(SST-SSE-SSR);
R_2=SSR/SST; % 拟合优度
disp(R_2);

image-20230811222406484

  • SST-SSE-SSR的结果不为0的原因是在matlab中浮点数做运算一定程度上结果不精准,但结果是5.6843^-14结果是非常小的即非常接近0
    [外链图片转存中…(img-WkmLP3WM-1692188156893)]

  • SST-SSE-SSR的结果不为0的原因是在matlab中浮点数做运算一定程度上结果不精准,但结果是5.6843^-14结果是非常小的即非常接近0

  • 拟合度为0.9635非常接近1了,说明该拟合函数的拟合度较好

相关文章:

清风数学建模——拟合算法

拟合算法 文章目录 拟合算法概念 确定拟合曲线最小二乘法的几何解释求解最小二乘法matlab求解最小二乘法如何评价拟合的好坏计算拟合优度的代码 概念 在前面的篇幅中提到可以使用插值算法&#xff0c;通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题…...

单片机 (一) 让LED灯 亮

一&#xff1a;硬件电路图 二&#xff1a;软件代码 #include "reg52.h"#define LED_PORT P2void main() {LED_PORT 0x01; // 0000 0001 D1 是灭的 } #include "reg52.h" 这个头文件的作用&#xff1a;包含52 系列单片机内部所有的功能寄存器 三&#…...

c++——单例模式

c单例模式 1、概念&#xff1a; 单例模式确保一个类只有一个实例&#xff0c;并提供一个全局访问点以获取该实例。这通常通过让类的构造函数为私有&#xff0c;以防止外部直接实例化&#xff0c;然后提供一个静态方法来获取实例。 2、实现方法&#xff1a; 实现单例模式的主…...

C# 流Stream详解(2)——FileStream、BinaryReader、MemorySream、SreamReader等之间的关系

【文件流】 电脑上的文件有很多&#xff0c;文本文件、音频文件、视频文件、图片文件等&#xff0c;这些文件会被持久化存储在磁盘上&#xff0c;其本质都是一堆二进制数据。 FileStream用于读取二进制文件。电脑上的所有文件&#xff0c;不管是文本、音频、视频还是其他任意…...

【JavaSE】详解final关键字

在Java中&#xff0c;final可以用来修饰类、方法和变量。final修饰类&#xff0c;表示该类无法被继承&#xff0c;并且此类的设计已被认为很完美而不需要进行修改或扩展。final修饰类中的方法&#xff0c;表示不可以被重写&#xff1b;也就是把该方法锁定了&#xff0c;以防止继…...

问道管理:机器人概念走势活跃,新时达涨停,拓斯达、丰立智能等大涨

机器人概念17日盘中走势活跃&#xff0c;到发稿&#xff0c;拓斯达大涨18%&#xff0c;昊志机电涨近16%&#xff0c;丰立智能涨超13%&#xff0c;步科股份、优德精细涨超10%&#xff0c;新时达涨停&#xff0c;天玑科技、兆龙互联、中大力德涨逾9%。 消息面上&#xff0c;8月16…...

elementui 修改日期选择器el-date-picker样式

1. 案例&#xff1a; 2. css /* 最外层颜色 */ .el-popper.is-pure {background: url("/assets/imgList/memuBG.png") no-repeat;border: none;background-size:100% 100%}/* 日期 1.背景透明 */ .el-date-picker{background: transparent; }/* 日期 2.标题、左右图…...

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-@RequestParam

&#x1f600;前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 6-完成控制器方法获取参数-RequestParam &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c…...

数据可视化:图表绘制详解

数据可视化是一种将抽象的数字和数据转化为直观图形的技术&#xff0c;使数据的模式、趋势和关系一目了然。本文将详细介绍如何绘制各种类型的图表&#xff0c;包括柱状图、折线图、饼图、散点图和热力图等。 第一部分&#xff1a;图表类型和选择 1. 柱状图 柱状图是用于比较类…...

【中危】Apache Ivy<2.5.2 存在XXE漏洞 (CVE-2022-46751)

漏洞描述 Apache Ivy 是一个管理基于 ANT 项目依赖关系的开源工具&#xff0c;文档类型定义(DTD)是一种文档类型定义语言,它用于定义XML文档中所包含的元素以及元素之间的关系。 Apache Ivy 2.5.2之前版本中&#xff0c;当解析自身配置、Ivy 文件或 Apache Maven 的 POM 文件…...

C#使用自定义的比较器对版本号(编码)字符串进行排序

给定一些数据&#xff0c;如下所示: “1.10.1.1.1.2”, “1.1”, “2.2”, “1.1.1.1”, “1.1.3.1”, “1.1.1”, “2.10.1.1.1”, “1.1.2.1”, “1.2.1.1”, “2.5.1.1”, “1.10.1.1”, “1.10.2.1”, “1.11.3.1”, “1.11.12.1”, “1.11.11.1”, “1.11.3.1”, “1”, “…...

AI在日常生活中的应用:从语音助手到自动驾驶

文章目录 AI的定义和发展AI在日常生活中的应用1. **智能语音助手**2. **智能家居**3. **智能医疗**4. **自动驾驶** 代码示例&#xff1a;使用Python实现基于机器学习的图片分类AI的未来前景结论 &#x1f389;欢迎来到AIGC人工智能专栏~探索AI在日常生活中的应用 ☆* o(≧▽≦…...

Windows10查看图片的分辨率

文章目录 查看方法 查看方法 鼠标悬停在想查看分辨率大小的图片上&#xff0c;稍等那么零点几秒&#xff0c;就会弹出图片的分辨率信息&#xff0c;如图所示&#xff1a;...

Spring事务和事务传播机制(2)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 在Spring框架中&#xff0c;事务管理是一种用于维护数据库操作的一致性和…...

计算机视觉 -- 图像分割

文章目录 1. 图像分割2. FCN2.1 语义分割– FCN &#xff08;Fully Convolutional Networks&#xff09;2.2 FCN--deconv2.3 Unpool2.4 拓展–DeconvNet 3. 实例分割3.1 实例分割--Mask R-CNN3.2 Mask R-CNN3.3 Faster R-CNN与 Mask R-CNN3.4 Mask R-CNN&#xff1a;Resnet1013…...

ubuntu18.04复现yolo v8之CUDA与pytorch版本问题以及多CUDA版本安装及切换

最近在复现yolo v8的程序&#xff0c;特记录一下过程 环境&#xff1a;ubuntu18.04ros melodic 小知识&#xff1a;GPU并行计算能力高于CPU—B站UP主说的 Ubuntu可以安装多个版本的CUDA。如果某个程序的Pyorch需要不同版本的CUDA&#xff0c;不必删除之前的CUDA&#xff0c;…...

Redis三种模式——主从复制,哨兵模式,集群

目录 一、主从复制 1.1主从复制的概念 1.2Redis主从复制作用 1.2.1数据冗余 1.2.2故障恢复 1.2.3负载均衡 1.2.4高可用基石 1.3Redis主从复制流程 1.4部署Redis 主从复制 1.4.1.环境部署 1.4.2.所有服务器都先关闭防火墙 1.4.3.所有服务器都安装Redis 1.4.4修改Master主节点R…...

mysql8.0.31新增只读远程普通用户

在 MySQL 8.0.31 中&#xff0c;可以通过以下步骤新增只读远程普通用户&#xff1a; 1、使用 root 用户登录 MySQL 数据库。 mysql -u root -p 2、创建用户&#xff1a; CREATE USER username% IDENTIFIED WITH mysql_native_password BY password ; 其中&#xff0c;username…...

揭开路由协议隐藏的风险

路由协议在互联网和基于其的服务的运行中发挥着至关重要的作用。然而&#xff0c;许多这些协议的开发都没有考虑到安全问题。 例如&#xff0c;边界网关协议 (BGP) 最初并未考虑对等点之间发生攻击的可能性。过去几十年来&#xff0c;BGP 中的起源和路径验证已投入了大量工作。…...

图片因固定宽高被拉伸了?object-fit:一个神奇的属性

一、问题产生的场景 近期在完成项目开发时&#xff0c;测试人员针对漫画长图上传后的展示提出了一个界面优化的点&#xff0c;因为其特点是长&#xff0c;但是我们展示图片的区域是固定的&#xff0c;如果我们按照正常思路将图片的宽高写死&#xff0c;确实占位大小的问题解决了…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...