在本论坛乱逛,无意间发现一道题目,对初学matlab拟合者或许有参考意义。 原题如下:http://www.madio.net/bbs/dispbbs.asp?boardID=110&ID=8603&page=17 我们现在来做其中的第一道拟合的题。 题目重述如下: 用表所给数据做2次和3次多项式拟合。试结合多项式拟合曲线对所得结果进行比较分析
$ {' z' [ M: C/ ^, y8 f
9 c) `* X( O8 o+ [# _) \
拟合数据
, }8 z2 H, ^$ K7 T9 @
7 u: `2 `) W6 d* _
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 |
$ O1 K; X% \4 y1 y& w& a1 ?+ B: V% }% y$ V
我们需要观察数据的变化趋势,用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,'+') 运行后得到的图像:
' }* p) V8 y5 q- j
可见,图像的变化趋势是一个比较理想的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+') 运行后得到的图像如下:
: `! `1 I2 ]& L+ W
结果非常的理想。 7 x B& O$ f# N/ k' O* G; F. c
[此贴子已经被作者于2008-2-11 13:09:11编辑过] |