数学建模案例分析-- 插值与拟合方法建模2数据拟合方法及应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§2数据拟合方法及应用
在生产实践和科学研究中,常常有这样的问题:由实验或测量得到变量间的一批离散样点,要求由此建立变量之间的函数关系或得到样点之外的数据。与此有关的另一类问题是拟合问题。当原始数据),(,),,(),,(1100n n y x y x y x 有误差时,我们确定的初等函数)(x P y =并不要求经过数据点,而是要求在某种距离意义下的误差达到最小(通常考虑使各数据点误差平方和最小)。
假设已知函数),(x c f y =(这里c 可以是多个未知参数)的一批有误差的数据
)
,(,),,(),,(2211n n y x y x y x 要求据此确定参数c ,这样的问题称为数据拟合。最小二乘法就是求c 使得残差平方和
2
1
)),(()(i n
i i x c f y c Q -=∑=达到最小。这里的建模原理实质上就是数理统计中的回归分析。
1、线性函数(1)建立回归方程
若离散样点),(,),,(),,(2211n n y x y x y x 集中在一条直线的附近,这时可建立线性回归方程
x b a y
ˆˆˆ+=按最小二乘法得到的具体算法是
记
∑∑∑∑∑=====-=-=-===n
i i i xy n
i i yy n
i i xx n
i i
n
i i
y
x n y x S y
n y S x
n x S y y x x 1
1
2
21
2
21
1
11则有
xx xy S S b
=ˆx b y a
ˆˆ-=(2)线性回归的显著性检验
采用如下检验统计量:
xx S b T σ
ˆˆ=
,其中的)ˆ(2
1ˆ2xx
yy S b S n --=σ
若)2(2
->n t T α,则认为所建立的线性回归方程正确。(3)利用回归方程作区间预测
当0x x =时,y 的置信度为α-1的预测区间是:
)
)(11ˆ)2(ˆˆ,)(11ˆ)2(ˆˆ(2
02
02020xx xx S x x n n t x b a S x x n n t x b a -++∙-++-++∙--+σσαα例1、为研究某一化学反应过程中温度x 对产品得率y 的影响,测得数据如下。x (℃)100110120130140150160170180190y
(%)
45
51
54
61
66
7074
78
85
89
要求拟合出它们的函数关系。
x=[100110120130140150160170180190];
y=[45515461667074788589];close;plot(x,y,’o’);
由于这些点落在一条直线附近,可以用线性函数bx a y +=来拟合,按上面算法通过命令p=polyfit(x,y,1)
求出x y 483.0735.2+-=。
2、可线性化的函数
根据专业知识或离散样点的形状,有时可选择适当的非线性函数来拟合。为确定其中的未知参数,可通过变量转换,把非线性函数转换成线性函数,然后借助线性函数的方法来实现数据拟合。诸如下面所列的曲线函数都能做到线性化:(1)
x
b a y +=1(2)b
ax
y =(3)x
b a y ln +=(4)bx
ae
y =(5)b ae
y =(6)x
be a y -+=
1以x
b
ae y =为例,我们只要作变换y Y x
X ln ,1
==
,就可化为线性函数bX a Y +=ln 。例2、电容器充电后,电压达到100伏,然后开始放电,测得时刻i t (秒)时电压i u (伏)如下表。
t 012345678910u
100
75
55
40
30
20
15
10
10
5
5
要求拟合电压u 与放电时间t 的函数关系。t=[012345678910];
u=[100755540302015101055];close;plot(t,u,’o’)
由于这些点落在曲线)0(,<=b ae u bt
附近,可通过变量转换u U t T ln ,==,化成线性函数
bT a U +=ln 。按上面算法通过如下命令来实现:
T=t;U=log(u);p=polyfit(T,U,1)b=p(1)
a=exp(p(2))
求出078.100,3126.0=-=a b ,这样所拟合的函数t
e
u 3126.078.100-=3、多项式函数
若离散样点的形状表明既不能用线性函数来拟合,又不能用可以线性化的函数来拟合的话,从理论上讲,用一个多项式函数来拟合总是可行的。在实际应用中,最常用的是二次和三次多项式函数。下面通过一个例子来说明。
例3、某种产品在生产过程中的废品率y 与它所含的某种物质量x 有关,现将试验所得16组数据记录列于下表。
x 3436373839393940y 1.30 1.000.730.900.810.700.600.50x 4041424343454748y
0.44
0.56
0.30
0.42
0.35
0.40
0.41
0.60
要求拟合y 与x 的函数关系。
x=[34363738393939404041424343454748];
y=[1.301.000.730.900.810.700.600.500.440.560.300.420.350.400.410.60];close;plot(x,y,’o’)
这些离散样点落在开口向上的二次抛物线2
cx bx a y ++=附近,按最小二乘法,使残差平方和
2
1
2
)(i n
i i i y cx bx a S -++=∑=达到最小。分别对S 求关于a,b,c 的偏导数,并令其为0,得到如下方程组
⎪⎪⎪⎩
⎪⎪⎪
⎨⎧=++=++=++∑∑∑∑∑∑∑∑∑∑∑===========i n
i i n i i n i i n i i i
n i i n i i n i i n i i n
i i
n i i n i i y x c x b x a x y x c x b x a x y c x b x na 1214131
2113
121
1
12
1)()()()()()()()(将以上表中数据代入方程组求出2
0093.08205.04840.18x x y +-=。
下面是用MATLAB 具体实现:
p=polyfit(x,y,2)
xi=linspace(34,48,1000);%绘图的X 轴数据z=polyval(p,xi);%得到多项式在数据点处的值close;
plot(x,y,’ko’,xi,z,’r-’)
若多项式次数太高,则会影响到拟合的精度,这时可考虑用分段多项式拟合。