数学建模之数据拟合
(4)倒指数曲线 y=ae b / x 其中 a>0,
(5)对数曲线 y=a+blnx,x>0
(6)S 型曲线 y
1 a be x
15
用MATLAB解拟合问题
1、线性最小二乘拟合 2、非线性最小二乘拟合
16
用MATLAB作线性最小二乘拟合
1. 作多项式f(x)=a1xm+ …+amx+am+1拟合,可利用已有 程序: a=polyfit(x,y,m)
r11a1 r12 a2 r1m am y1 ( n m) r a r a r a y nm m n n1 1 n 2 2
r11 R 其中 rn1 r 12 rn 2
n
即 Ra=y
r1m a1 y1 , y , a rnm am yn
17
例1 对下面一组数据作二次多项式拟合,
xi
0 0.1 1.978 0.2 0.3 0.4 6.16 0.5 7.34 0.6 7.66 0.7 9.58 0.8 9.48 0.9 9.30 1 11.2
yi -0.447
3.28 6.16
即要求 出二次多项式:
f ( x) a1x 2 a2 x a3
J (a1 , a2 , , am ) i2 [ f ( xi ) yi ]2
i 1 i 1
n
n
[ ak rk ( xi ) yi ]
i 1 k 1
n
m
2
(2)
11
问题归结为:求 a1,a2, …,am 使 J(a1,a2, …,am) 最小。
最小二乘法的求解:预备知识 超定方程组:方程个数大于未知量个数的方程组
定理:当RTR可逆时,超定方程组(3)存在最小二乘解,
且就是方程组 RTRa=RTy
的解:a=(RTR)-1RTy
13
线性最小二乘拟合 f(x)=a1r1(x)+ …+amrm(x)中 函数{r1(x),…,rm(x)}的选取 1. 通过机理分析建立数学模型来确定 f(x); 2. 将数据 (xi , yi) i=1, …,n 作图,通过直观判断确定 f(x): f=a1+a2x + + + + + f=a1+a2x+a3x2 + + a3>0 + + + f=a1+a2x+a3x2 + + + a3<0 + +
注:超定方程一般是不存在解的矛盾方程组。
2 ( r a r a r a y ) 如果有向量 a 使得 i1 1 i 2 2 达到最小, im m i i 1
则称 a 为上述超定方程的最小二乘解。
12
最小二乘法的求解:预备知识 所以,根据多元函数取得极值的必要条件,曲线拟合的最 小二乘法要解决的问题,就转化为求以下超定方程组最小二乘 解的问题。 Ra=y (3) r1 ( x1 ) rm ( x1 ) a1 y1 , a , y 其中 R am yn r1 ( xn ) rm ( xn )
i 1 n 2
+
+
+
i
(x+ i,yi) + +
尽可能小! y=f(x)
x
6
+
其中 i =yi -f(xi )
拟合与插值的关系 问题:给定一批数据点,需确定满足特定要求的曲线或曲面 解决方案: •若要求所求曲线(面)通过所给所有数据点,就是插值问题; •若不要求曲线(面)通过所有数据点,而是要求它反映对象整 体的变化趋势,这就是数据拟合,又称曲线拟合或曲面拟合。
中 的 a (a1 , a2 , a3 ) 使得:
2 [ f ( x ) y ] i i i 1 11
最小
18
解法1.用解超定方程的方法
此时 x12 R x2 11 1 x11 1 x1
1)输入以下命令: x=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
curve fit
15
spline
10
5
0
0
2
4
6
8
10
12
14
16
18
曲线拟合与样条插值进行比较
10
线性拟合问题的解法—最小二乘法的基本思路,
第一步:先选定一组函数 r1(x), r2(x), …,rm(x), m<n, 令 f(x)=a1r1(x)+a2r2(x)+ …+am rm(x) 其中 a1,a2, …,am 为待定系数。 第二步:以最小二乘准则确定a1,a2, …,am ,即使n个点(xi , yi) 处yi与f(xi) 的差i 的平方和最小 。 记 (1)
R=[(x.^2) ' x' ones(11,1)]; a=R\y' 2)计算结果: a = -9.8108
MATLAB(zxec1)
20.1293 -0.0317
f ( x) 9.8108x 2 20.1293x 0.0317
19
12 10
解法2.用多项式拟合的命令
1)输入以下命令:
数 学 建 模
拟 合 篇
1
目的
1、了解数据拟合的基本内容; 2、学习用Matlab软件求解拟合问题;
内容
1、拟合问题引例及基本理论; 2、用数学软件求解拟合问题;
3、应用实例;
4、实验作业;
2
拟 合
1. 拟合问题引例 2.拟合的基本原理
3
拟 合 问 题 引 例 1
0 已知热敏电阻数据: 温度t( C) 20.5 32.7 51.0 73.0 95.7
220 200 180 160 140 120 100 80 60 40 0 0.2 0.4 0.6 0.8 1 1.2 1.4
散 点 图
26
解:输入
xdata=[0.02,0.02,0.06,0.06,0.11,0.11,0.22,0.22,0.56,0.56,1.1,1.1]; ydata=[76,47,97,107,123,139,159,152,191,201,207,200];
总之, 函数插值与曲线拟合都是要根据一组数据构造一个函 数作为近似,由于近似的要求不同,二者的数学方法上是完全 不同的。
实例:下面数据是某次实验所得,希望得到x和 f之间的关系。
x f
1 2 4 7 1.5 3.9 6.6 11.7
9 12 13 15 17 15.6 18.8 19.6 20.6 21.1
f=a1+a2/x + + +
-bx f = a e + + a,b>0
f=aebx +
+ a,b>0
14
+ +
+
+ +
+ + +
非线性最小二乘拟合的线性化
如下非线性拟合函数可以线性化:
(1)双曲线
1 b a y x
(2)幂函数曲线 y=a x b , 其中 x>0,a>0
(3)指数曲线 y=a e bx 其中参数 a>0.
最小。 其中 fi(x)= f(x, xdatai, ydatai) = F(x, xdatai)- ydatai 注意其中f(x)的定义!
24
调用格式为:
x=lsqnonlin(‘fun’,x0); 说明:x= lsqnonlin (‘fun’,x0); 待求的非 线性参数 fun是一个事 先建立的定 义函数 f(x)的 M-文件,自 变量为x
2 ( F ( x , xdata ) ydata ) 最小 i i i 1
21
n
调用格式为: x = lsqcurvefit (‘fun’,x0,xdata,ydata);
说明:x = lsqcurvefit (‘fun’,x0,xdata,ydata); 待求的非 线性参数 fun是一个事先 建立的定义函 数F(x,xdata) 的 M-文件, 自变量 为x和xda一下插值和拟合的异同:
25
20
15
curve fit nearest
10
5
0
0
2
4
6
8
10
12
14
16
18
曲线拟合与最临近插值进行比较
8
25
20 curve fit 15 linear 10
5
0 0
2
4
6
8
10
12
14
16
18
曲线拟合与线性插值进行比较
9
25
20
2)计算结果: a = -9.8108 20.1293
f ( x) 9.8108x 2 20.1293x 0.0317
20
用MATLAB作非线性最小二乘拟合 Matlab的提供了三个求非线性最小二乘拟合的函数:
lsqcurvefit,nlinfit和lsqnonlin 1. lsqcurvefit(重点掌握!) 已知数据点: xdata=(xdata1,xdata2,…,xdatan) ydata=(ydata1,ydata2,…,ydatan) lsqcurvefit 用以求由被拟合的非线性函数F(x,xdata) 所 确定的含参量x(向量)的向量值函数 F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T 中的参变量x(向量),使得