在本论坛乱逛,无意间发现一道题目,对初学matlab拟合者或许有参考意义。

我们现在来做其中的第一道拟合的题。

题目重述如下:

用表所给数据做2次和3次多项式拟合。试结合多项式拟合曲线对所得结果进行比较分析

! z2 a$ G/ e; g8 I: Q' f

% I( s L" n9 ]. C6 H, E

拟合数据

& L+ m$ C4 h; h; C5 j

5 I" h% ?) v+ r% {

Xi-10-9-8-7-6-5-4

Yi-1324-994-724-508-340-214-124

Xi-3-2-10123

Yi-64-28-10-4-4-42

Xi45678910

Yi2056116206332500716

8 A9 t6 T3 s( R$ H9 h O+ E

我们需要观察数据的变化趋势,用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,'+')

运行后得到的图像:

7 i2 q7 S( d* g$ O% p# ?

可见,图像的变化趋势是一个比较理想的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+')

运行后得到的图像如下:

# M, y, Q8 s8 a* @3 K$ B" o8 o

结果非常的理想。

4 D5 s0 ?3 P/ t( x0 u5 w

[此贴子已经被作者于2008-2-11 13:09:11编辑过]

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐