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

基于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;
x= - 1: 0. 25: 1; y= [ - 0. 2209, 0. 3295, 0. 8826, 1. 4392, 2. 0003, 2. 5645, 3. 1334, 3. 7061, 4. 2836] ; p1= polyf it( x, y, 1) p1 = 2. 2516 2. 0131 p2= polyf it( x, y, 2) p2 = 0. 0313 2. 2516 2. 0001 y1 = po lyval( p1, x) ; % 多项式求值函数; y2 = po lyval( p2, x) ; p lot( x, y, c+ c, x, y1, cr: c, x, y2, ck - . c)
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)* ( exp( - c( 2)* tdata) - exp( - c( 3 )* tda ta) )
- ydata;
保存后, 在 M ATLA B命令窗口输入语句:
1. 函数形式。 ( 1) 多项式拟合函数 Po ly fit。 利用该函数进行 多项式曲线拟 合, 其调用 格式 为:
p= po lyfit( x, y, n)
收稿日期: 2007-05-14 作者简介: 唐家德 ( 1970- ), 男, 云南楚雄人, 楚雄师范学院数学系副教授, 硕士, 研究方向: 微分方程和数值计算。
y = [ - 0. 2209, 0. 3295, 0. 8826, 1. 4392, 2. 0003, 2. 5645,
3. 1334, 3. 7061, 4. 2836];
po ly too l( x, y)
图 3 多项式 (线性 )拟合的 图 4 多项式 (二次 )拟合的
交互式界面
交互式界面
打开多项式拟合的交互式界面, 见图 3, 由于要
17
先编写 M - 函数文件 Exam ple2_2
M - file: function f= Ex am ple2_2( c, tdata, ydata)
tda ta= [ 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];
ta) );
以文件名 Exam ple2_1保存后, 在 M ATLA B的 命令窗口中
输入语句:
tda ta= [ 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
16
计算机与现代化
2008年第 5期
其中 x, y为参与曲线拟合的实验数据, n为拟合 多项式的次数, 函数返回值为拟合多项式的系数 ( 按 降幂排列 )。 n= 1时, 就为线性拟合。由于高次多项 式会产生 Runge现象, 因此除非已知数据来自高次多 项式, 否则多项式拟合的次数一般不超过六次。
0引 言
在科学实验及应用领域中, 时常需要在分析一组 测试数据的基础上, 去求自变量与应变量之间近似函 数关系表达式, 以便计算机或其它设计人员利用它来 方便地进行其它设计计算。这类问题在图形上就是 由测得的点求曲线拟合的问题。
1 曲线拟合的基本原理
所谓曲线拟合是指设法找出某条光滑的曲线, 它
能最佳地拟合数据。在曲线拟合时, 并不要求拟合曲
表 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
拟合的函数为线性函数, 因此在多项式拟合交互式界
面中的 Degree中输入 1, 点击导出数据 Expo r,t 出现
Ab stract: T his paper introduces the function of non linear curve fitting ofM ATLA B so ftware. By do ing experim ents w ith com puter and erro r ana lysis, it is looking for be tter nonlinerar function to fit exper im ental data, in o rder to exp lo re and get correct so lution of non linear curve fitting. K ey w ords: curve fitting; nonlinear; M ATLA B
legend( c实验数据 c, c一次拟合 c, c二次拟 合 c) ; 故一次、二次拟合多项式分别为:
y* = 2. 2516x + 2. 0131 和 y* = 0. 0313x2 + 2. 2516x+ 2. 0001, 拟合曲线图见图 1。
图 1 例 1多项式 曲线拟合图
( 2) 非线性数据拟合函数 lsqcurvefit和 lsqnon lin。 M ATLA B 提 供了 两 个求 解 最 小 二 乘 非 线 性 数 据 拟合问题的命令 lsqcurve fit和 lsqnonlin。两者都要事 先定义 M - 函数文件。 ¹ c= lsqcurvefit( cfunc, x0, xdata, ydata) 其中 - fun. 为拟合函数的 M - 函数文件名, x0为 初始向量, xdata, ydata为参与曲线拟合的实验数据。 函数返回值 c为非线性函数 - fun. 的拟合系数。 例 2: 2004年全国大学生数学建模竞赛 C 题 ( 酒 后驾车 ) 中给出某人在短时间内喝下两瓶啤酒后, 间 隔一定的时间 t测量他的血液中酒精含量 y( 毫克 /百 毫升 ), 得到数据如表 1所示。
线一定要经过每一个数据点。其思想是使它能反映
这些离散数据的变化趋势, 使数据点的误差平方和最
小。也就是已知一组测定的 数据 ( 例如 N 个点 ( xi,
yi ) )去求得自变量 x 和因变量 y的一个近似解析表
达式 y= U( x) 。若记误差 Di = U( xi ) - yi, i= 1, 2, ,,
c0= [ 1 1 1] ;
for i= 1: 50
c= lsqnonlin( cExamp le2_2c, c0); c0= c;
en d
c
c = 114. 2587 0. 1852 2. 0124 , 从而得出拟合曲线:
y = 114. 2587( e- 0. 1852t - e- 2. 0124t )
2008年第 6期 文章编号: 1006-2475( 2008) 06-0015-05
计算 机 与 现 代 化 JISUAN JI YU X IAN DA IHUA
基于 MATLAB 的非线性曲线拟合
唐家德
总第 154期
(楚雄师范学院数学系, 云南 楚雄 675000)
摘要: 介绍软件 MAT LAB 非线性曲线拟合的功能, 通过上机实验 和误差分析, 寻找较好的非线性函数来拟合实验数据 , 从
( 3)
拟合曲线图见图 2。
º c= lsqsnon lin( cfunc, c0)。
求含参量非线性函数 fun中的参量 c, 使得各数
据点函数值 fun的平方和最小。
例如用 lsqsnonlin ( cfunc, c0) 命令求解例 2 的过
程如下:
2008年第 5期
唐家德: 基于 MAT LAB 的非线性曲线拟合
18 15 12 10 7 7 4];
c0= [ 1 1 1] ;
for i= 1: 50
c= lsqcurvefit( cExam ple2_1c, c0, tda ta, yda ta);
c0= c; % 以计算出 的 c为初值进行迭代;
en d
y1= c( 1) * ( exp ( - c ( 2) * tdata) - exp( - c( 3) * tda-
酒精含量 38 35 28 25 18 15 12 10 7 7 4
题目要求结合给定数据建立饮酒后血液中酒精
浓度的数学模型。通过建立微分方程模型得到短时
间内喝酒后血液中酒精浓度与时间的关系为:
y = c1 ( e- c2 t- e- c3 t)
( 2)
现在根据实验数据, 利用非线性拟合函数 lsqcur-
( 4)
2. 图形窗口形式。
( 1) 利用多项式拟合 的交互图命令 ( GU I) po ly-
too l调用格式为:
po ly too l( x, y)
其中 x, y 分别为 实验数据 构成向量, 例如 利用
po ly too l求解例 1的 MATLAB命令如下:
x = - 1: 0. 25: 1;
vefi,t 确定模型 ( 2) 中的参数 c1, c2, c3。求解过程为:
相关主题