Lab04.曲线拟合的最小二乘法实验

  • 格式:doc
  • 大小:61.50 KB
  • 文档页数:5

Lab04.曲线拟合的最小二乘法实验【实验目的和要求】
1.让学生体验曲线拟合的最小二乘法,加深对曲线拟合的最小二乘法的理解;
2.掌握函数ployfit和函数lsqcurvefit功能和使用方法,分别用这两个函数进行多项式拟合和非多项式拟合。

【实验内容】
1.在Matlab命令窗口,用help命令查询函数ployfit和函数lsqcurvefit功能和使用方法。

2.用多项式y=x3-6x2+5x-3,产生一组数据(x i,y i)(i=1,2,…,n),再在y i上添加随机干扰(可用rand产生(0,1)均匀分布随
机数,或用randn产生N(0,1)均匀分布随机数),然后对x i
和添加了随机干扰的y i用Matlab提供的函数ployfit用3次多
项式拟合,将结果与原系数比较。

再作2或4次多项式拟
合,分析所得结果。

3.用电压V=10伏的电池给电容器充电,电容器上t时刻的电压
为τt e
V
V
V
t
v -
-
-
=)
(
)
(
,其中V0是电容器的初始电压,τ是充电常数。

对于下面的一组t,v数据,用Matlab提供的函数
lsqcurvefit确定V和τ。

【实验仪器与软件】
1.CPU主频在1GHz以上,内存在128Mb以上的PC;
2.Matlab 6.0及以上版本。

实验讲评:
实验成绩:
评阅教师:
年月日
Lab04.曲线拟合的最小二乘法实验1.在Matlab命令窗口,用help命令查询函数ployfit和函数lsqcurvefit功能和使用方法。

在MATLAB中,用polyfit函数来求得最小二乘拟合多项式的系数,polyfit函数的调用格式为:[P,S]=polyfit(X,Y,m)。

函数根据采样点X和采样点函数值Y,产生一个m次多项式P及其在采样点的误差向量S。

其中X,Y是两个等长的向量,P是一个长度为m+1的向量,P的元素为多项式系数,得到的多项式为降序。

同样可以用lsqcurvefit函数来求得最小二乘拟合多项式的系数,调用格式为:x = lsqcurvefit(fun,x0,xdata,ydata)。

其中,fun 为自定义的函数,函数中的未知量即为要求的多项式的系数;x0为系数的初值;xdata与ydata是给定的数据构成的向量,且xdata与ydata的长度相等。

2.用多项式y=x3-6x2+5x-3,产生一组数据(x
i ,y
i
)(i=1,2,…,
n),再在y
i
上添加随机干扰(可用rand产生(0,1)均匀分布随
机数,或用randn产生N(0,1)均匀分布随机数),然后对x
i 和添加了随机干扰的y
i
用Matlab提供的函数ployfit用3次多项式拟合,将结果与原系数比较。

再作2或4次多项式拟合,分析所得结果。

xdata=linspace(-5,5,11)
ydata=xdata.^3-6*xdata.^2+5*xdata-3.+rand(1,11)
P3=polyfit(xdata,ydata,3)
P2=polyfit(xdata,ydata,2)
P4=polyfit(xdata,ydata,4)
运行的结果为:
xdata =
Columns 1 through 8
-5 -4 -3 -2 -1 0 1 2
Columns 9 through 11
3 4 5
ydata =
Columns 1 through 5
-302.1853 -182.0942 -98.8730 -44.0866 -14.3676
Columns 6 through 10
-2.9025 -2.7215 -8.4531 -14.0425 -14.0351
Column 11
-2.8424
P3 =
0.9952 -5.9921 5.0713 -2.4977
P2 =
-5.9921 22.7851 -2.4977
P4 =
-0.0027 0.9952 -5.9256 5.0713 -2.6892
即:32
P3 = 1.0034x-6.0029x+4.9351x-2.6419
2
P2 = -6.0029x+22.7962x-2.6419
432
P4 = -0.0001x+1.0034x-5.9996x+4.9351x-2.6514
原函数为:32
y=x-6x+5x-3
x=-20:0.5:20;
y=x.^3-6*x.^2+5*x+3;
p3=1.0034*x.^3-6.0029*x.^2+4.9351*x-2.6419;
p2=-6.0029*x.^2+22.7962*x-2.6419;
p4=-0.0001*x.^4+1.0034*x.^3-5.9996*x.^2+4.9351*x-2.6514;
plot(x,y,'g',x,p3,'+b',x,p2,'k',x,p4,'*r')
好。

四次拟合时得到的四次项系数相当小,而其他项系数与原函数近似,说明拟合得到的效果也很明显。

对于二次,由于次数比原函数小,所以系数差别较大,但是,在数据不多的时候还是差别不大的。

3.用电压V=10伏的电池给电容器充电,电容器上t 时刻的
电压为τt e V V V t v ---=)()(0,其中V 0是电容器的初始电压,τ是充电常数。

对于下面的一组t ,v 数据,用Matlab 提供的函数lsqcurvefit 确定V 和τ。

function fun=v_t(x,t)
fun=10-(10-x(1))*exp(-t/x(2));
t=[0.5,1,2,3,4,5,7,9];
v=[6.63,6.48,7.26,8.22,8.66,8.99,9.43,9.63];
x0=[0,1];
x = lsqcurvefit(‘v_t ’,x0,t,v)
结果为:x = 5.7646 3.6792
即:
05.7646 =3.6792
Vτ=。