【数学建模】——拟合算法

news2024/11/25 2:43:52

【数学建模】——拟合算法

拟合算法定义:与插值问题不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数)。

插值和拟合的区别:

例子:

此例子中如果用插值算法,因为各点连起来需要的线段过去曲折不方便插值,所以我们可以利用拟合算法解决:

 

 

最小二乘法:

最小二乘法作为我们拟合算法的一个铺垫为后续的检验我们拟合的函数是否符合真实的图形而做基础条件

拟合值:将原xi代入到拟合的函数中得到的y^.

Matlab代码实现最小二乘法来检验拟合函数:

(这里我们的代码实现是直接自己求k和b再去检验,我们也可以直接传入数据让matlab直接给我们求出来,后面我们讲曲线拟合工具箱时会讲到)

我们构造的函数是y=kx+b

  1. 传入数据画出散点
  2. 求出n(行数)利用公式求出k和b
  3. Hold函数:继续在之前的图形上来画图,grid on函数:显示网格。
  4. 画出y=kx+b的函数图像

a.利用传统画法模拟生成x,y,y=kx+b,用plot画出

 

b.利用匿名函数法

匿名函数:在matlab中不能直接定一个含有未定义变量的函数方程,所以需要匿名含来解决此问题.

形式:函数名=@(自定义变量)函数方程

Eg:z=x^2+y^2 (false,xy没有被定义过)

Z=x@(x,y)x^2+y^2(true)。

匿名函数完成后再用fplot函数构图。

Fplot函数:可用于画出匿名一元函数的图像

fplot(函数名,[定义域范围])

eg:f=@(x)k*x+b; fplot(f,[2.5,7]);

 

如何让评价拟合的好坏?(出列)

拟合优度:到!

 

 

 

对于我们评价拟合的好坏有时需要看R^2(拟合优度),有时需要看SSE(误差)那如何区分什么时候看R^2,什么时候看SSE呢?

R^2只能用于判断线性函数时(此线性分彼线性)

 

如何让判断函数是否线性:

 

计算拟合有限度的代码:

 

 

MatLab——曲线拟合工具箱

a.位置:

 

b.也可以在命令行窗口输入cftool运行打开。

在拟合器中点击选择数据,会选择我们编译器中定义的变量,也可以取名字。

 

输入数据后会自动构建散点图,这样我们再从拟合类型中选择合适的方程或自定义方程(选择后会出拟合的线段,看看是否接近)

 

函数图像的保存:

  1. 截图(不清晰)
  2. 导出:上方由导出->导出为窗口(会形成一个小窗口)->文件->导出设置->(如果为了图像更加清晰可以点击->渲染->分辨率->600)->导出(选择jpg

/png格式)

 

Matlab拟合工具想生成图像后还可以帮你生成此图像的代码(作为自定义函数形式)

如何讲生成的代码保存的自己的代码中?

导出->生成代码

 

如何保存?

生成代码后->ctrl+s保存系统会自动以函数名定义问保存的文件名。

我们再把第一行function后面的复制到主函数中就可以应用了。

记得要把第一行后面的一些注释去掉就可以了

(类似这部分)

函数名复制完后我们在应用和的时候只需要在定义一个变量用来存放我们在生成此图像时用到的函数(如何时系统的拟合函数在拟合工具箱会显示),在一些拟合函数中的参数也要定义上。

Eg:

如下图我们输入的时自定义函数,它会自动帮我们求出参数的值

在主函数应用的时候我们需要先把这些参数变量定义出来

 

                                                                                            

自己模拟数据进行演示:

 

  1. randi(10,2,5):随机产生一个1-10之间的随机值正数矩阵,每次生成的数都会变

 

也可以定义随机值的范围:

 

2.rand函数产生一个0-1之间随机值的矩阵(S3,S4)

 

 

  1. normrnd函数:

 

  1. roundn函数:任意位置四舍五入

(在第几为四舍五入,第几位后面的位数全部归0)(四舍五入0.5,5,50,500……)

 

例题预测美国人口:参考代码:

%主函数
clear;clc
%第一步传入数据
year = 1790 : 10 :2000;
populations = [3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4]
%第二部绘制散点图
plot(year,populations,'o')
%第三步进行拟合函数利用拟合工具箱
cftool;
%拟合完成后生成的自定义函数:
[fitresult, gof] = createFit_American(year, populations)
%第四步定义变量,函数传入要预测的年份,绘制预测的图像
t = 2001:2030;
r = 0.0274;
xm = 342.4412;
predictions = xm./(1+(xm./3.9-1).*exp(-r.*(t-1790))); % 计算预测值(注意这里要写成点乘和点除,这样可以保证按照对应元素进行计算)
figure(2)
plot(year,populations,'o',t,predictions,'.') % 绘制预测结果图

 

%生成拟合图像的自定义函数
function [fitresult, gof] = createFit_American(year, populations)
%% 拟合: '美国人口'。
[xData, yData] = prepareCurveData( year, populations );
% 设置 fittype 和选项。
ft = fittype( 'xm/(1+(xm/3.9-1)*exp(-r*(t-1790)))', 'independent', 't', 'dependent', 'x' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.StartPoint = [0.779051723231275 100];
% 对数据进行模型拟合。
[fitresult, gof] = fit( xData, yData, ft, opts );
% 绘制数据拟合图。
figure( 'Name', '美国人口' );
h = plot( fitresult, xData, yData );
legend( h, 'populations vs. year', '美国人口', 'Location', 'NorthEast', 'Interpreter', 'none' );
% 为坐标区加标签
xlabel( 'year', 'Interpreter', 'none' );
ylabel( 'populations', 'Interpreter', 'none' );
grid on

注意事项:在我们输入自定义函数后如果线段不符合点我们可以在你和选项中函数方程下面->高级选项,修改系数的值(本题的系数时r和xm我们已将xm改为100后符合线段数据)

 

最后的结果:

 博主主要跟着清风数学建模的课程学习,其中里面的一些图片都来源于上课视频的截图。

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

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

相关文章

【微信小程序-uniapp】CustomPickerMul 自定义多选选择器组件

1. 效果图 2. 组件完整代码 <template><view class="custom-picker-mul"><view :class&#

MFC学习之2048小游戏程序源码

2048游戏的开发原理相对简单&#xff0c;它基于一个4x4的方格&#xff0c;通过控制数字方块的移动来合成相同的数字方块&#xff0c;并生成新的数字方块。 具体实现过程如下&#xff1a; 确定需求&#xff1a;首先需要明确游戏的功能需求&#xff0c;如产生随机数字方块、控制…

PostgreSQL的进程架构和内存架构

文章首发地址 PostgreSQL的进程架构 PostgreSQL的进程架构是由多个进程组成的&#xff0c;每个进程都有不同的作用和职责。下面是PostgreSQL的进程架构的详细说明&#xff1a; 后台进程(Postmaster) 后台进程是PostgreSQL启动时创建的第一个进程&#xff0c;它负责管理和控…

Android oom_adj 详细解读

源码基于&#xff1a;Android R 0. 前言 在博文《oom_adj 内存水位算法剖析》一文中详细的分析了lmkd 中针对 oom_adj 内存水位的计算、使用方法&#xff0c;在博文《oom_adj 更新原理(1)》、《oom_adj 更新原理(2)》中对Android 系统中 oom_adj 的更新原理进行了详细的剖析。…

STM32定义变量到指定内存位置

rt thread&#xff0c; 怎么定义变量到指定内存位置&#xff1f; OpenCat是由未来可编程机器人宠物制造商Petoi开发的基于Arduino和Raspberry Pi的开源四足机器人宠物框架。 非 gcc 版 定义一个宏 #ifndef __MEMORY_AT #if (defined (__CC_ARM)) #define _…

来电屏蔽号码分析

场测反馈77号码开头的电话号码屏蔽后&#xff0c;来电可以屏蔽&#xff0c;但是短信无法屏蔽 //Blocker is close 行 2689: 05-19 12:12:36.477096 2348 2348 I TelecomFramework: TelephonyConnectionService: onCallFilteringCompleted(TC3_1, CallFilteringCompletionInf…

leetcode:1184. 公交站间的距离(python3解法)

难度&#xff1a;简单 环形公交路线上有 n 个站&#xff0c;按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离&#xff0c;distance[i] 表示编号为 i 的车站和编号为 (i 1) % n 的车站之间的距离。 环线上的公交车都可以按顺时针和逆时针的方向行驶。 返回乘…

ECharts笔记-------柱状图与折线图

这幅图表由title、legend、series、xAxis、yAxis和tooltip这六个组件组成&#xff0c;每个组件都有对应的属性来调节参数&#xff0c;title和legend的代码跟上一篇一样&#xff0c;这里就不多讲了。 tooltip组件 tooltip: {trigger: axis,axisPointer: { type: cross } }, t…

系统组网图

接收路由器发送的数据信息并解析&#xff0c;做出相应的指示&#xff0c;点击按键表示完成拣货。 标签ID码正面显示无线通信868M&#xff0c;跳频通信通信速率200K/50K覆盖通信半径30米以上多色LED高亮指示灯自定义双向通信协议&#xff0c;安全可靠 电子标签拣货系统就是通过…

诺康达将再次上会接受审核:曾遭暂缓审议,业绩可持续性值得商榷

撰稿|行星 来源|贝多财经 近日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;北京诺康达医药科技股份有限公司&#xff08;下称“诺康达”&#xff09;将于2023年7月20日接受上市委的审议&#xff0c;并于7月13日更新了招股书&#xff08;上会稿&#xff09;。 据招股…

总部V批恩没有发送到分支流量,只有接收分支流量,分支无法访问总部内网资源

环境&#xff1a; 分支设备&#xff1a; AF8.0.48 联想笔记本 总部设备&#xff1a; SSL V批恩 V7.0 AF8.0.75 RUIJIE NBS5710-24GT4SFP-E 问题描述&#xff1a; 总部V批恩没有发送到分支流量&#xff0c;只有接收分支流量&#xff0c;分支无法访问总部内网资源&#…

H3C-Cloud Lab实验-单臂路由实验

实验拓扑图&#xff1a; 实验需求&#xff1a; 1. 按照图示为 PC3 和 PC4 配置 IP 地址和网关 2. PC3 属于 Vlan10&#xff0c;PC4 属于 Vlan20&#xff0c;配置单臂路由实现 Vlan10 和 Vlan20 三层互通 3. PC3 和 PC4 可以互通 实验步骤&#xff1a; 1. 连接所有设备 2. …

Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09

Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09 非常适合小朋友玩的小游戏 功能很齐全完善 项目地址&#xff1a;https://download.csdn.net/download/Highning0007/88050261

KuiperInfer深度学习推理框架环境配置-Ubuntu 22.04

KuiperInfer项目地址 Github项目地址 B站课程地址 安装Armadillo 官网&#xff1a;Armadillo官网 介绍&#xff1a;Armadillo C Library是一种C的线性代数库&#xff0c;包含一些矩阵和向量的运算&#xff0c;可以选用高效的LAPACK和BLAS进行加速。 矩阵相关计算的文档&…

Arthas和常量池

一、Arthas 快速入门 | arthas 1、Arthas使用 运行arthas提供的应用程序 curl -O https://arthas.aliyun.com/math-game.jar java -jar math-game.jar 运行arthas工具jar包 curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 启动界面如下图&…

Google Play针对恶意软件采取最新反制措施!

近日&#xff0c;谷歌开始针对Google Play上不断入侵的恶意软件采取反制措施&#xff0c;要求所有以机构名义注册的新开发者账户在提交应用程序之前提供一个有效的D-U-N-S号码。 这项新措施能有效提高平台的安全性和可信度&#xff0c;同时也能够有效遏制新账户提交恶意软件的…

kubernetes中特定域名使用自定义DNS服务器出现的解析异常

故障发生背景&#xff1a; 租户反馈生产业务服务连接到中间件的时候&#xff0c;偶尔会有连接失败的情况&#xff0c;然后我们查看对应组件服务正常&#xff0c;手动请求组件服务也显示正常&#xff0c;让租户查看业务服务日志发现报错无法解析对应的域名&#xff0c;我们手动是…

数据库的分片策略

数据库的分片策略 1、范围分片2、hash 取模分片3、一致性hash 分片 1.分片策略 数据库的分片策略是指将数据库中的数据按照一定的规则和方式进行分割&#xff08;分片&#xff09;存储在不同的物理节点或服务器上的策略。分片策略旨在实现水平扩展&#xff0c;提高数据库的性…

暑假第九天打卡

英语&#xff1a; 新东方六级一单元单词刷题复习 离散&#xff1a; 例12 使用消解算法判断下述公式是否是可满足的: 公式 S p∧(p∨q)∧(p∨q)∧(q∨r)∧(q∨r) 解&#xff1a; S p∧(p∨q)∧(p∨q)∧(q∨r)∧(q∨r) //化为主合取式 循环1&#xff1a; S0 S1 {p…

Windows 进程和作业

Windows 进程和作业 创建进程CreateProcess 函数的参数CreateProcess 的流程 创建Windows“现代化”进程创建其他类型的进程 进程的内部构造EPROCESSKPROCESSPEBCSR_PROCESSW32PROCESS 受保护进程最小进程和 Pico 进程最小进程Pico进程 Trustlet 安全进程进程的终止作业作业的限…