
题目:
有一只对温度敏感的电阻,已经测得了一组温度T和电阻R的数据如下,问当温度为60oC时,电阻有多大?
| T | 20.5 | 32.7 | 51.0 | 73.0 | 95.7 |
| R | 765 | 826 | 873 | 942 | 1032 |
已知变量x,y之间的函数关系为:
通过实验获得一组{, | i=1,2,3,···,m}测量数据,确定出系数。
当n=1时,函数为线性关系若函数为线性关系,其形式为:
(1)
式中a, b为要用实验数据确定的常数。由实验测得的数据是总是存在着误差,所以,把各组数据代入(1)式中,两边并不相等。相应的作图时,数据点也并不能准确地落在公式对应的直线上,误差的的平方和为:
为了使拟合出的近似曲线能尽量反映所给数据的变化趋势,要求在所有数据点上的残差
都较小。为达到上述目标,可以令上述偏差的平方和最小,即
称这种方法为最小二乘原则,利用这一原则确定拟合多项式的方法即为最小二乘法多项式拟合。按最小二乘法,当a, b选择适当,能使为最小时才是最佳曲线。用偏导数的方法求出此式的最小值。
以上是线性拟合的基本原理。
程序:
x0=[20.5, 32.7, 51.0, 73.0, 95.7]; %t的行向量
y0=[765, 826, 873, 942, 1032]; %r的列向量
%plot(x0,y0,'r'); %画连续的图形,颜色设置为红
n=1;
P=polyfit(x0,y0,n) %生成拟合多项式
xx=0:1:100;
z=polyval(P,xx); %计算z的值
plot(xx,z,'-b',x0,y0,'.r') %绘图
legend('拟合曲线','原始数据','Location','SouthEast') %注标题
xlabel('x')
zz=polyval(P,60); %计算60时拟合多项式的值
display(zz)
当n=1时,即线性拟合。60oC时电阻值为906.0212。
当n=5时,即高次多项式拟合,由图可以看出边缘部分误差比中间部分误差要大。60oC时电阻值为906.0093.
小结:
通过这个实验,验证了直线拟合和曲线拟合的优缺点,多项式次数太小时数据点之间差别很大,次数最大是误差最小但是有时后不符合实际情况,所以用最小二乘法时次数要取合适一点。
