菜鸟的数学建模之路(三):线性与非线性拟合

线性拟合

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
% 注意:在进行线性拟合之前,必须要具备两个条件
% (1)数据点
% (2)要进行拟合的函数模型,不同的函数模型拟合出来的效果不一样
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 


% 方法一
%这里的拟合函数模型是ff1 * term1 + coeff2 * term2 + coeff3 * term3 +...
%数据点为x与y矩阵
x=[1,1.5,2,2.5,3];
y=[0.9,1.7,2.2,2.6,3];

% p = polyfit(x,y,n)
% 有一组y,和一组x,拟合成一个一元N次多项式
p=polyfit(x,y,1);

% linspace用于产生x1,x2之间的N点行线性的矢量,其中x1、x2、N分别为起始值、终止值、元素个数。若默认N,默认点数为100。
% 这里min(x) = 1,max(x) = 3,所以会产生1到3逐步递增的100个点
x1=linspace(min(x),max(x));

% y=polyval(p,x):计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序。
% 这里的p是求得的拟合函数的相关系数
y1=polyval(p,x1);

% 绘图,给定的数据点和拟合的函数的图
plot(x,y,'*',x1,y1);

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
% 方法二
% 这里的x和y矩阵为数据点
% 拟合的拟合函数模型默认为直线
% 注意x和y是列矩阵
x=[1;1.5;2;2.5;3];
y=[0.9;1.7;2.2;2.6;3];
p=fittype('poly1');
f=fit(x,y,p);
plot(f,x,y);

运行结果:
在这里插入图片描述

非线性拟合

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
% 注意:在进行线性拟合之前,必须要具备两个条件
% (1)数据点
% (2)要进行拟合的函数模型,不同的函数模型拟合出来的效果不一样
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 
% x和y矩阵是数据点
% 要拟合的函数模型是y=a*x^2+b*x+c
x=[3.2,3.6,3.8,4,4.2,4.8,5,5.4,6.2,6.4,6.6,6.9,7.1]';%注意x和y是列矩阵
y=[0.38,0.66,1,0.77,0.5,0.66,0.83,1,0.71,0.71,1,0.87,0.83]';

% fittype('要拟合的函数模型','independent','自变量','coefficients',{'相关系数1','相关系数2','相关系数3',...,'相关系数n'})
% p的输出是一个函数模型,比如这里的p输出是:p(a,b,c,x) = a*x.^2+b*x+c
p=fittype('a+b.*exp(-x)','independent','x','coefficients',{'a','b'});

% f(自变量,因变量,函数),输出为函数的相关系数
f=fit(x,y,p);

% 画出所给的数据的散点图和拟合的函数图
plot(f,x,y);


运行结果:
在这里插入图片描述

资源来自网络。

当前非线性拟合和多元拟合的工具较少,这是针对常用的拟合算法,开发的一款数据拟合为主的软件。包括线性拟合的各种算法,非线性拟合的各种算法,以及多元拟合的各种算法。其中提供了很多非线性方程的模型,以满足不同的需求,也可以制定自己所需要的指定非线性方程模型的,采用最先进的初始值估算算法,无需初始值就可以拟合自己想要的非线性方程模型各个模块的介绍如下。 1.线性拟合算法模块 根据最小二乘拟合算法,对输入的数据进行变量指定次方的拟合。同时可对自变量或因变量进行自然对数和常用对数的转换后再拟合。根据实际情况,开发了单调性拟合以针对各种定量分析的用途。同时开发了,针对一组数据,得到最高相关系数的自动拟合功能,由程序自动选择拟合次数以及自变量和因变量的数据格式。 2.非线性拟合算法模块 根据非线性方程的特点,开发了最先进的智能初始值估算算法,配合LM迭代算法,进行非线性方程的拟合。只需要输入自变量和因变量,就可以拟合出所需要的非线性方程。拟合相关系数高,方便快捷。并借助微粒群算法,开发了基于微粒群的智能非线性拟合算法,拟合出方程的相关系数相当高,甚至会出现过拟合现象。 3.多元拟合算法模块 根据最小二乘算法的原理开发了多元线性拟合算法,同时开发了能够指定变元次数的高次多元线性拟合。由于多元变量的情况下函数关系复杂,采用高次多元线性拟合能有效提高拟合效果而不会出现过拟合现象。同时针对每个变元可能最合适的拟合次数不一定都一样,开发了自适应高次多元拟合算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值