在本论坛乱逛,无意间发现一道题目,对初学matlab拟合者或许有参考意义。 原题如下:http://www.madio.net/bbs/dispbbs.asp?boardID=110&ID=8603&page=17 我们现在来做其中的第一道拟合的题。 题目重述如下: 用表所给数据做2次和3次多项式拟合。试结合多项式拟合曲线对所得结果进行比较分析 ( P( w- I. F2 F
8 o" M2 t2 _' v% u! ~" w7 v
拟合数据
* f. { u- D, J2 v7 x
' G1 X% z0 S( G6 W- {
Xi | -10 | -9 | -8 | -7 | -6 | -5 | -4 | Yi | -1324 | -994 | -724 | -508 | -340 | -214 | -124 | Xi | -3 | -2 | -1 | 0 | 1 | 2 | 3 | Yi | -64 | -28 | -10 | -4 | -4 | -4 | 2 | Xi | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Yi | 20 | 56 | 116 | 206 | 332 | 500 | 716 |
; J1 S* S! N: D, v$ D3 b( L
我们需要观察数据的变化趋势,用matlab画出散点图来。 先对数据进行处理得到: x=-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 y=-1324 -994 -724 -508 -340 -214 -124 -64 -28 -10 -4 -4 -4 2 20 56 116 206 332 500 716 绘制散点图。 程序如下: clear all x=[-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10]; y=[-1324 -994 -724 -508 -340 -214 -124 -64 -28 -10 -4 -4 -4 2 20 56 116 206 332 500 716]; plot(x,y,'+') 运行后得到的图像:
0 _! l' t4 ~2 Y
可见,图像的变化趋势是一个比较理想的3次函数图像。对此,我们用3次函数进行拟合。 程序如下: clear all format long x=[-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10]; y=[-1324 -994 -724 -508 -340 -214 -124 -64 -28 -10 -4 -4 -4 2 20 56 116 206 332 500 716]; [p,r]=polyfit(x,y,3) 运行后的结果为: p = 1.00000000000000 -3.00000000000000 1.99999999999999 -4.00000000000000 r =
R: [4x4 double] df: 17 normr: 3.184820221315369e-013 故,拟合的三次函数为: y1=x.^3-3*x.^2+1.99999999999999*x-4 我们再做出拟合后的函数图像与原来的散点图进行比较,看看拟合的效果; 程序如下: clear all x=[-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10]; y1=x.^3-3*x.^2+1.99999999999999*x-4; y2=[-1324 -994 -724 -508 -340 -214 -124 -64 -28 -10 -4 -4 -4 2 20 56 116 206 332 500 716] plot(x,y1,x,y2,'r+') 运行后得到的图像如下:
$ v- q; f1 l7 Z8 J# D3 z' }6 O
结果非常的理想。 ! ?' H- O2 K. v( ?% h% k7 f3 t
[此贴子已经被作者于2008-2-11 13:09:11编辑过] |