最小二乘曲线拟合及其MATLAB实现课件 下载本文

65432101959196019611962196319641965

图 2 拟合函数对原始数据的逼近

4 最小二乘曲线拟合案例分析与解算

4.1 案例叙述

起重量限制器是用来保护塔机的重要装置之一,是用于防止因超重而引起起升电机、传动机构、钢丝绳的损坏。但是它只能在极限的状态下保护塔机起升机构不会受到损坏,不能够显示起重量值,因此,司机在操作过程中不了解塔机每次起吊重量的具体状况。为了进一步提高塔机的安全性能和工作效率,增加塔机起重量在线监测装置非常重要,实时准确地测量出起重量是在线监测的关键。

在实时临测系统中,在原有起重量限制器的基础上加装了拉力传感器,传感器所测量的拉杆拉力Q与钢丝绳的张力F之间存在着一定的函数关系,起重量增加,拉杆拉力也相应增加,因此可通过间接测量拉杆拉力的方法先测出钢丝绳的张力,然后根据吊钩处的钢丝绳倍率关系计算出实际起重量,从而在拉杆拉力与塔机起重量之间建立起函数关系。

第 16 页 共 26 页

4.2 数据输入与分析

由于塔机起重量G与钢丝绳张力F之间有确定的函数关系,在实际应用中,以塔机起重量G代替钢丝绳张力F作为输出样本,以拉杆拉力Q作为输入样本。塔机QTZ63最大额定起重量为Ge?6000kg,分别以0.1Ge,0.2Ge,?,Ge为起重量,测量相应的拉力传感器拉力Q,以获取样本表 3所示。

样本 1 2 3 4 5 6 7 8 9 10 11 拉杆拉力起重量G/kg 0 600 1200 1800 2400 3000 3600 4200 4800 5400 6000 Q/kN 0 0.45 0.94 1.44 2.10 2.61 3.36 4.27 5.16 6.05 7.33 表 3实测样本、估算值及相对误差

利用MATLAB画出其散点图,分析其函数模型,程序代码如下: G=[0 600 1200 1800 2400 3000 3600 4200 4800 5400 6000]; Q=[0 0.45 0.94 1.44 2.10 2.61 3.36 4.27 5.16 6.05 7.33]; plot(Q,G,'o')

结果如图 3所示,根据散点图的走势我们可以设原函数为三次多项式函数模型:

G?aQ3?bQ2?cQ第 17 页 共 26 页

6000500040003000200010000012345678

图 3样本数据散点图

4.3 进行拟合求解

由于该案例的运算量不是太大,所以在这里我们在采用MATLAB解算的同时

也进行了一次手工解算,同时也可以就两种方法的对比体现出MATLAB解算的高效、简单与快捷的特点,但是在这个大数据时代,我们碰到的更多是手工解算所不能完成的大数据,到时候就只能利用MATLAB实现了。

4.3.1 手工解算

(1)由原始数据散点图得出函数模型如下

G?aQ3?bQ2?cQ

(2)将表 3中的原始数据代入上式得超定方程组

Gi?aQi3?bQi2?cQi ?i?1,2,?,11?

该超定方程组的矩阵形式为Ax?G,其中

第 18 页 共 26 页

????????A??????????Q1Q2Q3Q4Q5Q6Q7Q8Q9Q10Q11Q122Q2Q322Q4Q52Q62Q72Q82Q922Q102Q11Q13???3?Q2??3??Q3?3?Q4??3??Q5??3Q6???3??Q7??3Q8???3?Q9??3Q10???3?Q11??00.450.941.442.102.6100.20250.88362.07364.41006.81213.3611.28964.2718.23295.1626.62566.0536.60257.3353.7289?0.911??0.8306??2.9860?9.2610??17.1196? 37.9331??77.8545?137.3881???221.4451?393.8328?0Tx??c,b,a?

?T G??0,600,1200,1800,2400,3000,3600,4200,4800,5400,6000(3)建立法方程组

ATAx?ATs

5466.3284??160.8613899.4019? ATA??899.40195466.328434940.3542???.328434940.3542230929.4670??5466??T ATG??148308.000,800985.1200,4763802.6780(4)解法方程组ATAx?ATs,得

T?T x*??c,b,a???1383.5979,?110.5342,4.6019所以所得的拟合函数为

G?4.6019Q3?110.5342Q2?1383.5979Q

4.3.1 基于MATLAB的解算

通过对散点图的分析我们已经假设出了函数原型

G?aQ3?bQ2?cQ.

求解过程实现的MATLAB程序如下:

第 19 页 共 26 页

G=[0 600 1200 1800 2400 3000 3600 4200 4800 5400 6000]; Q=[0 0.45 0.94 1.44 2.10 2.61 3.36 4.27 5.16 6.05 7.33];

令a1?a,a2?b,a3?c这样,原函数就可以写出G?a1Q3?a2Q2?a3Q,用MATLAB程序代码写出: function G = F( a,Q )

G=a(1)*Q.^3+a(2)*Q.^2+a(3)*Q; end%定义原型函数G

format long%小数精度定义为小数点后15位

[a,JM]=lsqcurvefit('F',[1;1;1],Q,G); %调用Isqcurvefit函数求系数和偏差值结果如下: a =

1.0e+03 *

0.004601860834153 -0.110534167186377

由结果可知a=a(1)=4.6019,b=a(2)=-110.5342,c=a(3)=1383.5979。即由MATLAB解算出来的拟合函数为

1.383597884382993 JM =

1.523115957936404e+04

G?4.6019Q3?110.5342Q2?1383.5979Q

JM???G?Qi??Gi??15231.1596

2i?111拟合函数与上面手工解算的结果是一致的。

通过传统手工解算与MATLAB解算过程的对比,能够明显的看出MATLAB解算比手工解算要简单方便的多,这种对比在数据量更大的案例中会更加的显著,而且在那种大数据处理中手工解算是很容易出错的,MATLAB解算可以避免这种错误。

第 20 页 共 26 页