数学建模常见的一些方法【04拟合算法】
文章目录
- 数学建模常见的一些方法
- 1. 拟合算法
- 1.1 插值和拟合的区别
- 1.2 求解最小二乘法
- 1.3 Matlab求解最小二乘
- 1.4 如何评价拟合的好坏
- 1.5 证明SST = SSE + SSR
- 1.6 计算拟合优度的代码
- 1.7 拟合工具箱
- 1.8 补充的计算函数randi,rand,normrnd,roundn
- 1.8.1 randi(范围,行,列): 产生均匀分布的随机整数(i = int)
- 1.8.2 rand(行,列): 产生0至1之间均匀分布的随机数
- 1.8.3 normrnd(均值,标准差,行,列):产生正态分布的随机数
- 1.8.4 roundn(数,位数)—任意位置四舍五入
数学建模常见的一些方法
1. 拟合算法
- 与插值问题不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数)。
1.1 插值和拟合的区别
插值算法中,得到的多项式f(x)要经过所有样本点。但是如果样本点太多,那么这个多项式次数过高,会造成龙格现象。
尽管我们可以选择分段的方法避免这种现象,但是更多时候我们更倾向于得到一个确定的曲线,尽管这条曲线不能经过每一个样本点,但只要保证误差足够小即可,这就是拟合的思想。(拟合的结果是得到一个确定的曲线)
1.2 求解最小二乘法
1.3 Matlab求解最小二乘
测试数据:
x =4.20005.90002.70003.80003.80005.60006.90003.50003.60002.90004.20006.10005.50006.60002.90003.30005.90006.00005.6000
>> y
y =8.400011.70004.20006.10007.900010.200013.20006.60006.00004.60008.400012.000010.300013.30004.60006.700010.800011.50009.9000
计算代码:
>> plot(x,y,'o')
>> % 给x和y轴加上标签
>> 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; % 函数线
>> fplot(f,[2.5,7]); % 设置显示范围
>> legend('样本数据','拟合函数','location','SouthEast')
计算过程:
>> plot(x,y,'o')
>> % 给x和y轴加上标签
>> xlabel('x的值')
>> ylabel('y的值')
>> n = size(x,1);>> n*sum(x.*y)-sum(x)*sum(y)
ans = 1.3710e+03>> n*sum(x.*x)-sum(x)*sum(x)
ans = 654.4600>> k = (n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))
k = 2.0948>> b = (sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))
b = -1.0548>> hold on
>> grid on
>> f=@(x) k*x+b;
>> fplot(f,[2.5,7]);
>> legend('样本数据','拟合函数','location','SouthEast')
1.4 如何评价拟合的好坏
线性函数是指对参数为线性(线性于参数)
在函数中,参数仅以一次方出现,且不能乘以或除以其他任何的参数,并不能出现参数的复合函数形式。
1.5 证明SST = SSE + SSR
1.6 计算拟合优度的代码
计算代码:
mean()
是求均值的函数
>> y_hat = k*x+b; % y 的拟合值
>> SSR = sum((y_hat-mean(y)).^2) % 回归平方和
>> SSE = sum((y_hat-y).^2) % 误差平方和
>> SST = sum((y-mean(y)).^2) % 总体平方和
>> SST-SSE-SSR
>> R_2 = SSR / SST
计算过程:
>> y_hat = k*x+b; % y 的拟合值
>> SSR = sum((y_hat-mean(y)).^2) % 回归平方和
SSR = 151.1583>> SSE = sum((y_hat-y).^2) % 误差平方和
SSE = 5.7281>> SST = sum((y-mean(y)).^2) % 总体平方和
SST = 156.8863>> SST-SSE-SSR
ans = 5.6843e-14>> R_2 = SSR / SST
R_2 = 0.9635
1.7 拟合工具箱
低版本的Matlab可以在命令窗口中直接输入”cftool”
1.8 补充的计算函数randi,rand,normrnd,roundn
1.8.1 randi(范围,行,列): 产生均匀分布的随机整数(i = int)
%产生一个1至10之间的随机整数矩阵,大小为2x5;
s1 = randi(10,2,5)
9 4 5 3 2
7 6 1 2 3%产生一个-5至5之间的随机整数矩阵,大小为1x10;
s2 = randi([-5,5],1,10)
-1 -5 4 5 0 0 -2 4 -1 -4
1.8.2 rand(行,列): 产生0至1之间均匀分布的随机数
%产生一个0至1之间的随机矩阵,大小为1x5;
s3 = rand(1,5)
0.780252068321138 0.389738836961253 0.241691285913833 0.403912145588115 0.0964545251683886%产生一个a至b之间的随机矩阵,大小为1x5; % a + (b-a) * rand(1,5); 如:a,b = 2,5
s4= 2 + (5-2) * rand(1,5)
2.39591987781901 4.82615177232646 4.86840362068941 3.72562578523540 2.17933862884147
1.8.3 normrnd(均值,标准差,行,列):产生正态分布的随机数
%产生一个均值为0,标准差(方差开根号)为2的正态分布的随机矩阵,大小为3x4;
s5 = normrnd(0,2,3,4)-1.73093606110961 -2.66400884263049 0.667021666131612 -0.260569306291441
-0.353068228462902 -4.65973431161015 0.782707208865802 0.367378191723884
1.58283212325727 -2.89819458567748 0.903358837856475 -0.952306033238148
1.8.4 roundn(数,位数)—任意位置四舍五入
% 0个位 1十位 2百位 -1小数点后一位 以此类推a = 3.1415
roundn(a,-2) % ans = 3.1400
roundn(a,2) % ans = 0
a =31415
roundn(a,2) % ans = 31400
roundn(5.5,0) %6
roundn(5.5,1) %10
参考链接
数学建模常见的一些方法【04拟合算法】相关推荐
- 数学建模常见的一些方法【03插值算法】
文章目录 数学建模常见的一些方法 1. 插值算法 1.1 插值法的定义 1.2 插值法的分类 1.3 一般插值多项式原理 1.4 拉格朗日插值法 1.5 龙格现象(Runge phenomenon) ...
- 数学建模学习笔记(四)——拟合算法
文章目录 拟合算法简介 一个线性规划的例子 最小二乘法 求解最小二乘法 拟合检验 总结 拟合算法简介 与插值算法不同,拟合算法的目的是得到一条确定的曲线:而插值是根据已有的数据来获得一系列新的&quo ...
- 数学建模常见的综合评价方法及预测方法
综合评价方法 •简单加权法 1. 线性加权综合法 适用条件:各评价指标之间相互独立. 对不完全独立的情况,其结果将导致各指标间信息的重复,使评价结果不能客观地反映实际. 主要特点: (1)各评价指标间 ...
- 数学建模中常用的方法
数学建模中常用的方法:类比法.二分法.差分法.变分法.图论法.层次分析法.数据拟合法.回归分析法.数学规划(线性规划,非线性规划,整数规划,动态规划,目标规划).机理分析.排队方法.对策方法.决策方法 ...
- 数学建模常见模型总结
数学建模常见模型总结 一.插值 当已有数据量不够,需要补充,且认定已有数据可信时,通常利用函数插值方法. 常用插值方法 拉格朗日插值 分段线性插值 Hermite 三次样条插值 克里金法 matlab ...
- 数学建模的影响因素分析方法
数学建模的影响因素分析方法 PCA主成分分析 灰色关联分析 AHP层次分析 小结 如果赶时间可直接看小结部分,再返回看正文 作为萌新参加了数学建模,为解决影响煤炭价格的主要因素的问题, ...
- 数学建模清风第二次直播:模拟退火算法
学习网址:课件下载 数学建模清风第一次直播:传染病模型和微分方程拟合 数学建模清风第二次直播:模拟退火算法 数学建模清风第三次直播:excel在数学建模中的应用 博客笔记: 数学建模清风第一次直播:传 ...
- 数学建模常见算法说明以及建模过程中的问题
1.建模步骤 模型的建立:当有两个模型套用时,说的高端点,说成是前两个字组合后新名字的算法,其实是两个模型的叠加 模型的分析:表层的分析(从图表中能够看出什么)+深层次的分析 模型的检验:例如,给10 ...
- 【清风数学建模】论文写作方法
数学建模论文写作方法 基本模板 标题 基于所使用的主要模型或者方法作为标题: 直接使用赛题所给的题目或者要研究的问题作为标题. 论文题目的要求:简短精炼但题目字数与更精确表述内容相比,尽可能多用几个字 ...
最新文章
- Java并发系列—工具类:CountDownLatch
- 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )
- VMware SDS 之四:VSAN的技术细节
- 云数据保护需要增强应对复杂环境的能力
- 【杂谈】GAN对人脸图像算法产生了哪些影响?
- Felgo之初体验--安装与运行
- 轻松解决MYSQL数据库连接过多的错误
- java 接口 提供 路径,Java之Resource接口
- python 如何将代码中的输入保存到txt里边
- python 代码转程序_精悍的Python代码段-转
- js中加载指定的html代码,在js或JQuery中怎样判断页面html代码中含有指定名称的div元素...
- python哪个专业开这个课程-深圳python课程
- 《javascript入门学习笔记全集》【汇总】
- CentOS7安装Nginx,全网最快安装教程
- BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板
- php 字符串方法名,PHP使用字符串名称调用类的方法是什么
- 家庭网络布线图与布线方案
- java redis学习记录
- 一分钟了解TCP/IP网络通信协议
- java代码混淆加密_关于Java加壳和代码混淆