[数学建模(七)]使用MATLAB实现数据拟合

目录

1.线性最小二乘法

2.多项式拟合方法(polyfit)

3.最小二乘优化:lsqlin,lsqcurvefit,lsqnonlin,lsqnonneg

4.曲线拟合的用户图形界面求法(cftool)

1.线性最小二乘法

x=[19 25 31 38 44]‘;

y=[19.0 32.3 49.0 73.3 97.8]‘;

r=[ones(5,1),x.^2];

ab=r\y   % if AB=C then B=A\C

x0=19:0.1:44;

y0=ab(1)+ab(2)*x0.^2;

plot(x,y,‘o‘,x0,y0,‘r‘)

运行结果:

2. 多项式拟合方法

x0=[1990 1991 1992 1993 1994 1995 1996];

y0=[70 122 144 152 174 196 202];

a=polyfit(x0,y0,1)

y97=polyval(a,1997)

x1=1990:0.1:1997;

y1=a(1)*x1+a(2);

plot(x1,y1)

hold on

plot(x0,y0,‘*‘)

plot(1997,y97,‘o‘)

 

3.最小二乘优化

3.1 lsqlin 函数

例四:

x=[19 25 31 38 44]‘;

y=[19.0 32.3 49.0 73.3 97.8]‘;

r=[ones(5,1),x.^2];

ab=lsqlin(r,y)

x0=19:0.1:44;

y0=ab(1)+ab(2)*x0.^2;

plot(x,y,‘o‘,x0,y0,‘r‘)

3.2 lsqcurvefit 函数

(1)定义函数

function f=fun1(x,tdata);

f=x(1)+x(2)*exp(-0.02*x(3)*tdata); %其中x(1)=a,x(2)=b,x(3)=k

(2)主函数

td=100:100:1000;

cd=[4.54 4.99 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59];

x0=[0.2 0.05 0.05];

x=lsqcurvefit(@fun1,x0,td,cd)  % x(1)=a,x(2)=b,x(3)=k

t=100:10:1000;

c=x(1)+x(2)*exp(-0.02*x(3)*t);

plot(t,c)

hold on

plot(td,cd,‘*‘

3.3 lsqnonlin 函数

(1)定义函数

function f=fun2(x);

td=100:100:1000;

cd=[4.54 4.99 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59];

f=x(1)+x(2)*exp(-0.02*x(3)*td)-cd;

(2)主函数

x0=[0.2 0.05 0.05]; %初始值是任意的

x=lsqnonlin(@fun2,x0)

3.4 lsqnonneg 函数

c=[0.0372 0.2869;0.6861 0.7071;0.6233 0.6245;0.6344 0.6170];

d=[0.8587;0.1781;0.0747;0.8405];

x=lsqnonneg(c,d)

4. 曲线拟合的用户图形界面求法

Matlab 工具箱提供了命令cftool,该命令给出了一维数据拟合的交互式环境。具体

执行步骤如下:

(1)把数据导入到工作空间;

(2)运行cftool,打开用户图形界面窗口;

(3)对数据进行预处理;

(4)选择适当的模型进行拟合;

(5)生成一些相关的统计量,并进行预测。

时间: 2024-11-05 12:18:13

[数学建模(七)]使用MATLAB实现数据拟合的相关文章

数学建模培训二 ---- matlab的基本应用

while循环结构主要用来做迭代 find()函数很重要,用来找符合条件的数据 plot()用来画图 axis()用来限定坐标轴的范围 hold on: hold off 用来作图用 打断点调试方法(F5单步运行) load导入数据 roots用来求多项式的根 polyfit()用来做多项式拟合插值 polyfit(x, y, 拟合函数的阶) mean()用来求均值 syms用来定义符号 rand()用来产生随机数 nlinfit()非线性拟合 doublle()可以将一个符号矩阵转化成一个数值

[数学建模(六)]使用MATLAB实现插值

常用的插值:拉格朗日多项式插值.牛顿插值.分段线性插值.Hermite 插值和三次样条插值. 1.拉格朗日插值法 function y=lagrange(x0,y0,x); n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 测试: >> x0=

基于MATLAB的多项式数据拟合方法研究-毕业论文

摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式曲线拟合的基本理论,对多项式数据拟合原理进行了全方面的理论阐述,同时也阐述了曲线拟合的基本原理及多项式曲线拟合模型的建立.具体记录了多项式曲线拟合的具体步骤,在建立理论的基础上具体实现多项式曲线的MATLAB实现方法的研究,采用MATLAB R2016a的平台对测量的数据进行多项式数据拟合,介绍了M

如何入门参加数学建模竞赛

1 网上资源 1.1 数学中国 可以去数学中国网站看看,在数学建模比赛的培训这一块做得很好的机构,如果自己有点银子,可以去参加他们的网上课程.另外他们有专门的数学建模群,群里面有很好关于数学建模的资料.而且这个机构自己也举办数学建模比赛,如果有时候可以在这里组队,直接参加比赛,累积一些经验,增长见识. 1.2 数学建模视频课程,现在网络上有一些比较好的关于数学建模比赛的视频资源,可以谷歌一下 1.3 网络上的一些关于数学建模的电子书,有时候你也不知道哪本书比较适合你,所以你可以先在网上找一些电子

MATLAB在数学建模中的应用(二)

size():获取矩阵的行数和列数 (1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素为矩阵的行数,第二个元素是矩阵的列数. (2)[r,c]=size(A), (3)size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数.其中r=size(A,1)该语句返回的是矩阵A的行数, c=size(A,2) 该语句返回的是矩阵A的列数.另外length()=max(size()). subplot():

数学建模--matlab基础知识

虽然python也能做数据分析,不过参加数学建模,咱还是用专业的 1. Matlab-入门篇:Hello world! 程序员入门第一式: disp('hello world!') 2. 基本运算 先了解基本的运算符,做一些简单的尝试: +   Plus; addition operator. -   Minus; subtraction operator. *   Scalar and matrix multiplication operator. ^   Scalar and matrix

python 版 mldivide matlab 反除(左除)《数学建模算法与程序》Python笔记

今天在阅读数学建模的时候看到了差分那章 其中有一个用matlab求线性的代码,这里我贴出来 这里我送上 Python代码 In [39]: import numpy as np ...: from scipy.optimize import nnls ...: x = np.array([[1,2,3,4,5],[1,1,1,1,1]]) ...: x = x.T ...: y = np.array([11,12,13,15,16]) ...: nnls(x,y) ...: Out[39]: (

在数学建模中学MATLAB

为期三周的数学建模国赛培训昨天正式结束了,还是有一定的收获的,尤其是在MATLAB的使用上. 1. 一些MATLAB的基础性东西: 元胞数组的使用:http://blog.csdn.net/z1137730824/article/details/39206823 对于任意文件夹的同一格式的图片的批量读取:http://blog.csdn.net/haizimin/article/details/39646595 关于MATLAB在微分/偏微分方程以及其他高等数学问题中的应用. 关于MATLAB在

余胜威《MATLAB数学建模经典案例实战》2015年版

内容介绍 本书全面.系统地讲解了数学建模的知识.书中结合历年全国大学生数学建模竞赛试题,采用案例与算法程序相结合的方法,循序渐进,逐步引导读者深入挖掘实际问题背后的数学问题及求解方法.在本书案例的分析计算中巧妙地结合了MATLAB等工具,并采用不同的算法进行模型求解,达到异曲同工之妙.本书结合实际,对网上讨论的很多疑难问题也做了解答. 本书共25章,分3篇.主要内容有:MATLAB基础知识.LINGO基础知识.SPSS基础知识.数学建模基础理论及算法设计.基于LINGO的基础理论及算法设计.企业