文章目录

  • 数学建模常见的一些方法
    • 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拟合算法】相关推荐

  1. 数学建模常见的一些方法【03插值算法】

    文章目录 数学建模常见的一些方法 1. 插值算法 1.1 插值法的定义 1.2 插值法的分类 1.3 一般插值多项式原理 1.4 拉格朗日插值法 1.5 龙格现象(Runge phenomenon) ...

  2. 数学建模学习笔记(四)——拟合算法

    文章目录 拟合算法简介 一个线性规划的例子 最小二乘法 求解最小二乘法 拟合检验 总结 拟合算法简介 与插值算法不同,拟合算法的目的是得到一条确定的曲线:而插值是根据已有的数据来获得一系列新的&quo ...

  3. 数学建模常见的综合评价方法及预测方法

    综合评价方法 •简单加权法 1. 线性加权综合法 适用条件:各评价指标之间相互独立. 对不完全独立的情况,其结果将导致各指标间信息的重复,使评价结果不能客观地反映实际. 主要特点: (1)各评价指标间 ...

  4. 数学建模中常用的方法

    数学建模中常用的方法:类比法.二分法.差分法.变分法.图论法.层次分析法.数据拟合法.回归分析法.数学规划(线性规划,非线性规划,整数规划,动态规划,目标规划).机理分析.排队方法.对策方法.决策方法 ...

  5. 数学建模常见模型总结

    数学建模常见模型总结 一.插值 当已有数据量不够,需要补充,且认定已有数据可信时,通常利用函数插值方法. 常用插值方法 拉格朗日插值 分段线性插值 Hermite 三次样条插值 克里金法 matlab ...

  6. 数学建模的影响因素分析方法

    数学建模的影响因素分析方法 PCA主成分分析 灰色关联分析 AHP层次分析 小结 如果赶时间可直接看小结部分,再返回看正文         作为萌新参加了数学建模,为解决影响煤炭价格的主要因素的问题, ...

  7. 数学建模清风第二次直播:模拟退火算法

    学习网址:课件下载 数学建模清风第一次直播:传染病模型和微分方程拟合 数学建模清风第二次直播:模拟退火算法 数学建模清风第三次直播:excel在数学建模中的应用 博客笔记: 数学建模清风第一次直播:传 ...

  8. 数学建模常见算法说明以及建模过程中的问题

    1.建模步骤 模型的建立:当有两个模型套用时,说的高端点,说成是前两个字组合后新名字的算法,其实是两个模型的叠加 模型的分析:表层的分析(从图表中能够看出什么)+深层次的分析 模型的检验:例如,给10 ...

  9. 【清风数学建模】论文写作方法

    数学建模论文写作方法 基本模板 标题 基于所使用的主要模型或者方法作为标题: 直接使用赛题所给的题目或者要研究的问题作为标题. 论文题目的要求:简短精炼但题目字数与更精确表述内容相比,尽可能多用几个字 ...

最新文章

  1. Java并发系列—工具类:CountDownLatch
  2. 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )
  3. VMware SDS 之四:VSAN的技术细节
  4. 云数据保护需要增强应对复杂环境的能力
  5. 【杂谈】GAN对人脸图像算法产生了哪些影响?
  6. Felgo之初体验--安装与运行
  7. 轻松解决MYSQL数据库连接过多的错误
  8. java 接口 提供 路径,Java之Resource接口
  9. python 如何将代码中的输入保存到txt里边
  10. python 代码转程序_精悍的Python代码段-转
  11. js中加载指定的html代码,在js或JQuery中怎样判断页面html代码中含有指定名称的div元素...
  12. python哪个专业开这个课程-深圳python课程
  13. 《javascript入门学习笔记全集》【汇总】
  14. CentOS7安装Nginx,全网最快安装教程
  15. BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板
  16. php 字符串方法名,PHP使用字符串名称调用类的方法是什么
  17. 家庭网络布线图与布线方案
  18. java redis学习记录
  19. 一分钟了解TCP/IP网络通信协议
  20. java代码混淆加密_关于Java加壳和代码混淆

热门文章

  1. 玖益科技:拼多多商家如何快速提高店铺的复购率
  2. 赛马网基本算法之--将功赎过
  3. Fiddler(四) Inspectors详解
  4. 没钱,没技术,天才idea最多是个下酒菜.
  5. Word5——同一行带题注的两张图片生成的图表目录在同一行的解决办法
  6. 摘自《广州日报健康专栏》节选
  7. 一、需求测试-需求规格说明书规范
  8. 中国石油大学计算机科学技术李克文,李克文
  9. 408数据结构学习笔记——外部排序
  10. 基于JAVA教育培训机构信息管理系统计算机毕业设计源码+系统+lw文档+部署