当前位置:文档之家› 基于MATLAB的非线性曲线拟合

基于MATLAB的非线性曲线拟合


vefit,确定模型 (2)中的参数 c1 , c2 , c3 。求解过程为 :
先编写一个 M - 函数文件 Examp le2_1
M - file: function f = Examp le2_1 ( c, tdata)
f = c (1 ) 3 ( exp ( - c ( 2 ) 3 tdata) - exp ( - c ( 3 ) 3 tda2
17
先编写 M - 函数文件 Examp le2_2
M - file: function f = Examp le2_2 ( c, tdቤተ መጻሕፍቲ ባይዱta, ydata)
tdata = [ 0. 25 0. 5 0. 75 1 1. 5 2 2. 5 3 3. 5 4 4. 5 5 6 7 8 9
10 11 12 13 14 15 16 ];
legend ( ′实验数据 ′, ′一次拟合 ′, ′二次拟合 ′) ; 故一次 、二次拟合多项式分别为 :
y3 = 2. 2516x + 2. 0131 和 y3 = 0. 0313x2 + 2. 2516x + 2. 0001,拟合曲线图见图 1。
图 1 例 1多项式曲线拟合图
(2)非线性数据拟合函数 lsqcurvefit和 lsqnonlin。 MATLAB 提供了两个求解最小二乘非线性数据 拟合问题的命令 lsqcurvefit和 lsqnonlin。两者都要事 先定义 M - 函数文件 。 ① c = lsqcurvefit ( ′fun′, x0, xdata, ydata) 其中‘fun’为拟合函数的 M - 函数文件名 , x0为 初始向量 , xdata, ydata为参与曲线拟合的实验数据 。 函数返回值 c为非线性函数‘fun’的拟合系数 。 例 2: 2004年全国大学生数学建模竞赛 C题 (酒 后驾车 )中给出某人在短时间内喝下两瓶啤酒后 ,间 隔一定的时间 t测量他的血液中酒精含量 y (毫克 /百 毫升 ) ,得到数据如表 1所示 。
ydata = [ 30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25
18 15 12 10 7 7 4 ];
f = c (1) 3 ( exp ( - c ( 2) 3 tdata) - exp ( - c ( 3) 3 tdata) )
- ydata; 保存后 ,在 MATLAB命令窗口输入语句 :
例 1:给出下表数据 ,试用最小二乘法求一次和 二次拟合多项式 。
x - 1. 00 - 0. 75 - 0. 50 - 0. 25 0 0. 25 0. 50 0. 75 1. 00 y - 0. 2209 0. 3295 0. 8826 1. 4392 2. 0003 2. 5645 3. 1334 3. 7061 4. 2836 clear; close;
ta) ) ;
p lot ( tdata, ydata, ′+ ′, tdata, y1 ) ; legend ( ′实验数据 ′, ′拟 合曲线 ′)
成功得到最优解为 : c = 114. 2587 0. 1852 2. 0124
从而得出拟合曲线 :
y = 114. 2587 ( e - 0. 1852t - e - 2. 0124t )
ta) ) ;
以文件名 Examp le2_1保存后 ,在 MATLAB 的命令窗口中
输入语句 :
tdata = [ 0. 25 0. 5 0. 75 1 1. 5 2 2. 5 3 3. 5 4 4. 5 5 6 7 8 9
10 11 12 13 14 15 16 ];
ydata = [ 30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25
18 15 12 10 7 7 4 ];
c0 = [ 1 1 1 ];
for i = 1: 50 c = lsqcurvefit( ′Examp le2_1′, c0, tdata, ydata) ; c0 = c; %以计算出的 c为初值进行迭代 ;
end
y1 = c (1) 3 ( exp ( - c ( 2 ) 3 tdata) - exp ( - c ( 3 ) 3 tda2
(4)
2. 图形窗口形式 。
(1)利用多项式拟合的交互图命令 ( GU I) poly2
tool调用格式为 :
polytool ( x, y) 其中 x, y分别为实验数据构成向量 ,例如利用 polytool求解例 1的 MATLAB 命令如下 :
x = - 1: 0. 25: 1;
y = [ - 0. 2209, 0. 3295, 0. 8826, 1. 4392, 2. 0003, 2. 5645,
Non linear Curve F itting Ba sed on M ATLAB
TANG J ia2de
(Department of M athematics, Chuxiong Normal University, Chuxiong 675000, China)
Abstract: This paper introduces the function of nonlinear curve fitting ofMATLAB software. By doing experiments w ith computer and error analysis, it is looking for better nonlinerar function to fit experimental data, in order to exp lore and get correct solution of nonlinear curve fitting. Key words: curve fitting; nonlinear; MATLAB
c0 = [ 1 1 1 ];
for i = 1: 50 c = lsqnonlin ( ′Examp le2_2′, c0) ; c0 = c;
end
c
c = 114. 2587 0. 1852 2. 0124 ,从而得出拟合曲线 :
y = 114. 2587 ( e - 0. 1852t - e - 2. 0124t )
1. 函数形式 。 (1)多项式拟合函数 Polyfit。 利用该函数进行多项式曲线拟合 ,其调用格式 为:
p = polyfit( x, y, n)
收稿日期 : 2007205214 作者简介 :唐家德 (1970 - ) ,男 ,云南楚雄人 , 楚雄师范学院数学系副教授 ,硕士 ,研究方向 :微分方程和数值计算 。
2 M ATLAB曲线拟合的相关方法
MATLAB 提供了两种方法进行曲线拟合 。一种 是以函数的形式 ,使用命令对数据进行拟合 。这种方 法比较繁琐 ,需要对拟合函数有比较好的了解 。另外 一种是用图形窗口进行操作 ,具有简便 、快速 ,可操作 性强的优点 。另外 , MATLAB 从拟合曲线的对象上 看 ,又可分为多项式曲线拟合和其它非线性曲线拟 合 ,具体介绍如下 :
表 1 酒精含量与饮酒时间的实验数据
图 2 例 2非线性曲线拟合图
时间 (小时 ) 0. 25 0. 5 0. 75 1 1. 5 2 2. 5 3 3. 5 4 4. 5 5
酒精含量 30 68 75 82 82 77 68 68 58 51 50 41
时间 (小时 ) 6 7 8 9 10 11 12 13 14 15 16
0 引 言
在科学实验及应用领域中 ,时常需要在分析一组 测试数据的基础上 ,去求自变量与应变量之间近似函 数关系表达式 ,以便计算机或其它设计人员利用它来 方便地进行其它设计计算 。这类问题在图形上就是
由测得的点求曲线拟合的问题 。
1 曲线拟合的基本原理
所谓曲线拟合是指设法找出某条光滑的曲线 ,它
3. 1334, 3. 7061, 4. 2836 ];
polytool( x, y)
图 3 多项式 (线性 )拟合的 图 4 多项式 (二次 )拟合的 交互式界面 交互式界面
打开多项式拟合的交互式界面 ,见图 3,由于要 拟合的函数为线性函数 ,因此在多项式拟合交互式界 面中的 Degree中输入 1,点击导出数据 Export,出现 保存对话框 Export to Workspace,选中 Parameters (参 数 ) , Residuals (残 差 ) 后 点 击 OK, 在 MATLAB 的 Workspace窗口中可以看到参数为 : 2. 2516和 2. 0131
酒精含量 38 35 28 25 18 15 12 10 7 7 4
题目要求结合给定数据建立饮酒后血液中酒精 浓度的数学模型 。通过建立微分方程模型得到短时 间内喝酒后血液中酒精浓度与时间的关系为 :
y = c1 ( e - c2 t - e - c3 t)
(2)
现在根据实验数据 ,利用非线性拟合函数 lsqcur2
能最佳地拟合数据 。在曲线拟合时 ,并不要求拟合曲
线一定要经过每一个数据点 。其思想是使它能反映
这些离散数据的变化趋势 ,使数据点的误差平方和最
小 。也就是已知一组测定的数据 (例如 N 个点 ( xi ,
yi ) )去求得自变量 x和因变量 y的一个近似解析表
达式
y

(
x)
。若记误差
δ i
=φ( xi )
2008年第 6期 文章编号 : 100622475 (2008) 0620015205
计算机与现代化 J ISUANJ I YU X IANDA IHUA
基于 MATLAB的非线性曲线拟合
唐家德
总第 154期
(楚雄师范学院数学系 ,云南 楚雄 675000)
相关主题