MATLAB实现函数拟合

这篇具有很好参考价值的文章主要介绍了MATLAB实现函数拟合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.理论知识

1.拟合与插值的区别

2.几何意义

3.误差分析

二.操作实现

1.数据准备

2.使用cftool——拟合工具箱 

三.函数拟合典例

四.代码扩展


一.理论知识

1.拟合与插值的区别

通俗的说,插值的本质是根据现有离散点的信息创建出更多的离散点,从而不断提高精度;而拟合则不需要找到更多的点,目标在于根据已知的点构造出一条函数,使得每点上的误差尽可能地低——即曲线拟合的最好(最小化损失函数)

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

2.几何意义

本质来说,就是尽可能找到——能经过当前全部点且误差最小的曲线

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

理论部分这里不细说,涉及到最小二乘法,大家自行查资料~

3.误差分析

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

二.操作实现

1.数据准备

x 4.2 5.9 2.7 3.8 3.8 5.6 6.9
y 8.4 11.7 4.2 6.1 7.9 10.2 13.2
x 3.5 3.6 2.9 4.2 6.1 5.5 6.6
y 6.6 6 4.6 8.4 12 10.3 13.3

2.使用cftool——拟合工具箱 

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

 如上图,在APP菜单栏中找到“Curve Fitting”打开工具箱,或者在命令行输入:

cftool

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

在工具箱页面的左上角,选择x与y对应的变量。

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

 然后右下角就会出现函数图像,这是未拟合前的默认形态。 

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

然后即可选择拟合方式,通常情况下多项式拟合即可得到不错的效果。 

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

 如上图,即为4次多项式拟合的效果。

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

如上是有关拟合误差的一些数据,需要重点关注的是:

  • R值——拟合优度:当R值大于0.9或0.95时,即可认为拟合出来的函数可信度很高
  • 另外SSE等有关残差的参数也可以注意一下 

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

左下角给出了一些拟合结果的内容,如上图可知:

y=-0.07001*x^4+1.458*x^3-11.04*x^2+37.95*x-43.02,即为本次拟合出的函数方程! 

三.函数拟合典例

MATLAB实现函数拟合,Matlab与数学建模,matlab,算法,数学建模

上图是2021年亚太数学建模中绘制的图片,根据有限数据量进行拟合得出具有函数性质的关系曲线 

代码如下:

Time=[2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018];
I1=[0.182948847,0.211434303,0,0.030892678,0.279638917,0.469635573,0.493306586,0.538642594,0.546666667,0.487288532,0.955466399,0.927382146,0.91334002,0.934603811,0.960280843];
I2=[0.022145329,0.034602076,0.033910035,0.028373702,0.044982699,0.195555556,0.277216455,0.342268358,0.349880815,0.364413687,0.919031142,0.990311419,1,0.948096886,0.948096886];
I3=[0.521140071,0.392131831,0.174670582,0.220460164,0.162032973,0.340698155,0.222348372,0.327533528,0.244249827,0.359156053,0.245644824,0.454187732,0.646707562,0.905064612,1];
I4=[0.36938131,0.374916005,0.117566088,0.148750878,0.372001753,0.388274379,0.51190998,0.705307237,0.695969953,0.706219511,0.591608401,0.759083664,0.819291342,0.822706134,0.874415287];
figure;
%% Create a canvas
a=polyfit(Time,I1,3);
plot(Time,I1,'.',Time,polyval(a,Time));

%% Lock the current canvas,renders four function images on a single graph
hold on
b=polyfit(Time,I2,3);
plot(Time,I2,'.',Time,polyval(b,Time));
hold on
c=polyfit(Time,I3,3);
plot(Time,I3,'.',Time,polyval(c,Time));
hold on
d=polyfit(Time,I4,3);
plot(Time,I4,'.',Time,polyval(d,Time));
hold off
%% The command drawing part is finished, and the subsequent design is completed by graphic editing tools
%% FLG files will appear in the support material

四.代码扩展

1.计算误差


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   % 5.6843e-14  =   5.6843*10^-14   matlab浮点数计算的一个误差
R_2 = SSR / SST

2.产生随机数的一些操作:

% (1)randi : 产生均匀分布的随机整数(i = int)  
%产生一个1至10之间的随机整数矩阵,大小为2x5;
s1 = randi(10,2,5)
%产生一个-5至5之间的随机整数矩阵,大小为1x10;
s2 = randi([-5,5],1,10)

%  (2) rand: 产生0至1之间均匀分布的随机数
%产生一个0至1之间的随机矩阵,大小为1x5;
s3 = rand(1,5)
%产生一个a至b之间的随机矩阵,大小为1x5;  % a + (b-a) * rand(1,5); 如:a,b = 2,5
s4= 2 + (5-2) * rand(1,5)

% (3)normrnd:产生正态分布的随机数
%产生一个均值为0,标准差(方差开根号)为2的正态分布的随机矩阵,大小为3x4;
s5 = normrnd(0,2,3,4)

% (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

写在最后:对于数学建模竞赛来说,拟合并不是一种很高端的计算手段——仅在需要明确的函数方程时才建议使用。对于预测类的问题,建议使用回归、灰色预测、BP神经网络等模型。文章来源地址https://www.toymoban.com/news/detail-706609.html

到了这里,关于MATLAB实现函数拟合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模———层次分析法及其matlab语法,函数和代码实现

    层次分析法思想登场 建模比赛中最基础的模型之一,其主要用于解决评价类问题(例如:选择那种方案最好,哪位运动员或者员工表现的更优秀。) 评价类问题字眼: 评价的目标是什么? 达到这个目标有那几种方案? 评价准则或指标是什么? 确定权重的方方法——分而治

    2024年02月15日
    浏览(43)
  • 【数学建模】matlab正态拟合直方图 | 获取一组数据的统计特征(平均值,方差等)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 首先给出一组数据样例: 1.1.1 平均值(期望) 获得结果: 1.1.2 中值 1.1.3 方差和标准差 A.方差 B.标准差(一般也是正态分布里面的西格玛) 1.1.4 排序 依然用之前的数据画图 从数据分布上来看大概就是个正

    2024年02月04日
    浏览(52)
  • 【数学建模竞赛】Matlab逻辑规则,结构基础及函数

    在Matlab中,逻辑变量是一种特殊类型的变量,用于表示逻辑值。逻辑变量只有两个可能的值: true (真)和 false (假)。在Matlab中,我们可以使用 0 和 1 来表示逻辑变量的值。 为了定义逻辑变量,可以使用syms函数来定义符号变量。符号变量是一种特殊类型的变量,用于表示

    2024年02月10日
    浏览(33)
  • MATLAB数学建模:数据图形可视化-三维绘图函数

    在 MATLAB 中, 我们可使用函数 surf 和 surfc 绘制三维曲面图. 调用格式如下: 以矩阵 ZZZ 所指定的参数创建一个渐变的三维曲面. 坐标 $x = 1:n, y = 1:m, $ 其中 [m,n]=size(Z)[m,n] = size(Z)[m,n]=size(Z) 以 ZZZ 确定的曲面高度和颜色, 按照 X,YX,YX,Y 形成的格点矩阵, 创建一个渐变的三维曲面. X,

    2024年02月06日
    浏览(57)
  • 2023年数学建模:旅行商问题:数学建模与MATLAB实现

    目录 引言 问题定义 解决策略 MATLAB实现 数学建模案例

    2024年02月11日
    浏览(43)
  • 【数学建模】灰色关联(Matlab代码实现)

    目录 1 灰色关联理论 2 算例及Matlab代码实现 2.1 算例1 2.2 算例2   2.3 算例3 2.4 算例4  3 写在最后 灰色关联分析l是由邓聚龙教授于1982年提出的,也称“邓氏灰色关联法”。 方法以部分信息已知 ,部分信息未知的“贫信息”为研究对象,通过对部分已知信息的生成和开发,实现对

    2024年02月09日
    浏览(49)
  • 数学建模matlab实现一元线性回归

            一元线性回归是统计学中用于建立一个自变量(或称为解释变量、预测变量)和一个因变量(或称为响应变量、被预测变量)之间的线性关系的回归模型。它假设两个变量之间存在一个直线关系,通过拟合这条直线,可以用自变量的值来预测因变量的值。     

    2024年01月21日
    浏览(49)
  • 数学建模matlab实现多元线性回归

            多元线性回归是统计学中一种常用的回归分析方法,用于研究多个自变量对一个连续因变量的关系。它基于线性假设,假设因变量与自变量之间存在线性关系。         在多元线性回归中,我们考虑多个自变量的影响,并试图找到一条最佳拟合直线(或超平面

    2024年02月02日
    浏览(44)
  • 【数学建模】多元线性回归(Python&Matlab代码实现)

    目录 1 概述 2 算例1 2.1 算例 2.2 Python代码实现  2.3 结果 3 算例2  3.1 算例 3.2 Python代码 3.3 结果 4 算例3 4.1 算例 4.2 Python代码 4.3 结果 5 算例4——Matlab代码实现 5.1 算例 5.2 Matlab代码实现 5.3 结果  6 写在最后 一元线性回归模型研究的是一个因变量与一个自变量之间呈直线趋势的

    2023年04月15日
    浏览(46)
  • 2023年数学建模:种群竞争模型及其MATLAB实现

    目录 种群竞争模型 MATLAB实现 实战案例:两种昆虫的竞争

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包