seeyou8 发表于 2008-5-14 15:12

用多项式拟合出的函数来计算f(x)值怎么就不对呢

这样两列数据,多项式拟合一个函数y = 44195x4 - 132962x3 + 149979x2 - 75172x + 14127,然后我取一个数据计算f(0.728803),值怎么不和原来的值接近呢.拟合挺好的啊.,这是什么原因啊?
0.7288030.590770.7489290.6281060.7741940.6921930.7868580.7454450.7890250.7586090.7896910.7631050.7913250.7752840.7921270.7820150.7929040.7891210.7961750.8289620.7976930.8565830.7979030.8610610.7980570.8644570.8035381.0015880.8044941.0212240.8046281.0238670.8064691.0572360.8090971.097809

[ 本帖最后由 eight 于 2008-5-14 15:31 编辑 ]

wwbeyondww 发表于 2008-5-14 15:28

怎么不接近啊?蛮好啊.
=polyfit(x,y,4);
=polyval(a,0.728803,S);
ye

ye =

   0.58990327400716

seeyou8 发表于 2008-5-14 15:44

回复 2楼 的帖子

您好,我拟合出的函数y = 44195x4 - 132962x3 + 149979x2 - 75172x + 14127
能不能直接用这个函数计算值,比如
y=44195*0.728803^4-132962*0.728803^3+149979*0.728803^2-75172*0.728803+14127

结果就是1.3718了.

seeyou8 发表于 2008-5-14 15:50

不好意思,我知道错误了,大概是拟合出来的系数小数位不够,所以直接用公式计算值会有误差.,精度不够.

wwbeyondww 发表于 2008-5-14 16:40

回复 4楼 的帖子

估计是你取的位数不够.

a =

1.0e+005 *

   0.44198651960080-1.32972123361196   1.49990439386474-0.75178293998984   0.14127617613639
b=0.728803;
a(1)*b^4+a(2)*b^3+a(3)*b^2+a(4)*b+a(5)

ans =

   0.58990327401079
页: [1]
查看完整版本: 用多项式拟合出的函数来计算f(x)值怎么就不对呢