为什么我用MATLAB多项式拟合得到的函数,再用函数去作图时两者的曲线会不一样呢?clear allx0=[0 0.5 1 1.5 2 2.5 3 7 8 9 10 11.82 13 14 15 16 17.73 19 20 21 22 23.64 26 27 28 29 29.55];y0=[1.892e9 1.89e9 1.87e9 1.86e9 1.85e9

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 14:57:55
为什么我用MATLAB多项式拟合得到的函数,再用函数去作图时两者的曲线会不一样呢?clear allx0=[0 0.5 1 1.5 2 2.5 3 7 8 9 10 11.82 13 14 15 16 17.73 19 20 21 22 23.64 26 27 28 29 29.55];y0=[1.892e9 1.89e9 1.87e9 1.86e9 1.85e9

为什么我用MATLAB多项式拟合得到的函数,再用函数去作图时两者的曲线会不一样呢?clear allx0=[0 0.5 1 1.5 2 2.5 3 7 8 9 10 11.82 13 14 15 16 17.73 19 20 21 22 23.64 26 27 28 29 29.55];y0=[1.892e9 1.89e9 1.87e9 1.86e9 1.85e9
为什么我用MATLAB多项式拟合得到的函数,再用函数去作图时两者的曲线会不一样呢?
clear all
x0=[0 0.5 1 1.5 2 2.5 3 7 8 9 10 11.82 13 14 15 16 17.73 19 20 21 22 23.64 26 27 28 29 29.55];
y0=[1.892e9 1.89e9 1.87e9 1.86e9 1.85e9 1.84e9 1.83e9 3e5 3e5 3.1e5 3e5 2.9e5 2.4e5 2.3e5 2e5 2.2e5 2e5 1.85e5 1.8e5 1.78e5 1.75e5 1.7e5 1.62e5 1.65e5 1.6e5 1.55e5 1.5e5];
p3=polyfit(x0,y0,18);
vpa(poly2sym(p3),5)
x=0:0.1:29.6;
y1=polyval(p3,x);
>> plot(x,y1,x0,y0,'o')
grid on
得到如下函数:
y=1.604*10^(-9)*x^18 - 4.4275*10^(-7)*x^17 + 0.000056159*x^16 - 0.0043377*x^15 + 0.22791*x^14 - 8.6173*x^13 + 241.87*x^12 - 5123.9*x^11 + 82462.0*x^10 - 1.0064*10^6*x^9 + 9.2252*10^6*x^8 - 6.2331*10^7*x^7 + 3.0125*10^8*x^6 - 9.9516*10^8*x^5 + 2.1031*10^9*x^4 - 2.5932*10^9*x^3 + 1.6075*10^9*x^2 - 3.7944*10^8*x + 1.8927*10^9
我再输入
clear all
x=0:0.1:30;
y=1.604e-9*x.^18 - 4.4275e-7*x.^17 + 0.000056159*x.^16 - 0.0043377*x.^15 + 0.22791*x.^14 - 8.6173*x.^13 + 241.87*x.^12 - 5123.9*x.^11 + 82462.0*x.^10 - 1.0064e6*x.^9 + 9.2252e6*x.^8 - 6.2331e7*x.^7 + 3.0125e8*x.^6 - 9.9516e8*x.^5 + 2.1031e9*x.^4 - 2.5932e9*x.^3 + 1.6075e9*x.^2 - 3.7944e8*x+ 1.8927e9;
plot(x,y)
为什么曲线会不一样,我仔细看过只有曲线前一部分会是相同的大概在x小于5.5内是相同的,之后就完全不一样了.请教给位了.实在不明白为什么了.
主要是这个得到的曲线,一部分小于0,我是希望把常数项再变大一些,使得曲线完全在x轴上方。哪知道画出来的曲线完全不是那么回事。

为什么我用MATLAB多项式拟合得到的函数,再用函数去作图时两者的曲线会不一样呢?clear allx0=[0 0.5 1 1.5 2 2.5 3 7 8 9 10 11.82 13 14 15 16 17.73 19 20 21 22 23.64 26 27 28 29 29.55];y0=[1.892e9 1.89e9 1.87e9 1.86e9 1.85e9
clear all
x0=[0 0.5 1 1.5 2 2.5 3 7 8 9 10 11.82 13 14 15 16 17.73 19 20 21 22 23.64 26 27 28 29 29.55];
y0=[1.892e9 1.89e9 1.87e9 1.86e9 1.85e9 1.84e9 1.83e9 3e5 3e5 3.1e5 3e5 2.9e5 2.4e5 2.3e5 2e5 2.2e5 2e5 1.85e5 1.8e5 1.78e5 1.75e5 1.7e5 1.62e5 1.65e5 1.6e5 1.55e5 1.5e5];
p3=polyfit(x0,y0,18);
x1=0:0.1:29.6;
y1=polyval(p3,x1);
figure(1)
plot(x1,y1,x0,y0,'o')
grid on
figure(2)
x=0:0.1:30;
yy=poly2sym(p3);
y2=eval(yy);
plot(x,y2)
grid on
楼主你的问题可能出在精度问题上,因为你的18阶拟合本身拟合效果就很不好,而你用这句
vpa(poly2sym(p3),5)
是他的系数精度变低,也就导致后面的图形不一样,用我上面的代码,结果是一样的,
matlab的精度问题很重要,尤其在高阶拟合中

我觉得重点在于你采用的这两种方法并不是逆过程,你试着沿这个思路分析一下;MATLAB忘得差不多了。。。额。。。不是逆过程啊?难道那个拟合得到的函数跟画出来的曲线不是对应的。。。。。不是吧。。那matlab给我那个函数有何用。。。比如说拟合,只是有限的点用某种方法拟合,拟合出某条曲线;然后你用这个曲线上的若干个点,假设这些新取的点与原来的点不完全相同,拟合方法相同,拟合出的就一定是同一条曲线么?答案...

全部展开

我觉得重点在于你采用的这两种方法并不是逆过程,你试着沿这个思路分析一下;MATLAB忘得差不多了。。。

收起

好复杂!

你要知道函数只是拟合的,不可能完全相同。在那个软件里还没足够多的函数去配合你的数据,我记得有个专门软件拟合数据可以很好。不过忘了。。。可是我拟合完看到了它的曲线已经能较好的拟合了。。。。关键是再拿这个函数做图时 曲线完全不一样了。。。。我也不知道了,觉得好像也是最后那个回答的人的问题样...

全部展开

你要知道函数只是拟合的,不可能完全相同。在那个软件里还没足够多的函数去配合你的数据,我记得有个专门软件拟合数据可以很好。不过忘了。。。

收起

有关matlab数据拟合的问题请问用一组数据拟合出多项式来,但是多项式模型不确定,请问这个怎么办?另外,假如拟合出不同模型的多项式,请问得到的这个这些模型优劣性怎么考量? 怎么用matlab拟合函数,最好是三元的多项式 在matlab中实现六次多项式拟合要对1640,1650,1660.1900每隔十年所发生的干旱频次进行六次多项式拟合,具体数据和效果图在我的博客里.渴望得到各位网友的帮助, 为什么我用MATLAB多项式拟合得到的函数,再用函数去作图时两者的曲线会不一样呢?clear allx0=[0 0.5 1 1.5 2 2.5 3 7 8 9 10 11.82 13 14 15 16 17.73 19 20 21 22 23.64 26 27 28 29 29.55];y0=[1.892e9 1.89e9 1.87e9 1.86e9 1.85e9 MATLAB怎样搞多项式拟合 怎样利用matlab的polyfit函数拟合一个多项式 如何在matlab中确定多项式拟合的阶数 matlab多项式基本绘图问题f=0.0005191*x^5+(-5.176)*x^4+(2.064e+004)*x^3+(-4.117e+007)*x^2+(4.105e+010)*x-1.637e+013这是我用matlab拟合工具箱得到的函数,x的范围是1979:2015在主程序里输入得到的却是直线,这到底怎 origin 拟合图形的问题有好多散点要拟合,如果用线性,多项式,对数等拟合方式,怎么可以得到拟合曲线的解析式.不知道origin有没有这个出解析式的功能啊?如果没有推荐个软件吧,千万不要matlab, 最小二乘法用一个多项式函数拟合多个多项式函数用最小二乘法拟合,如何用matlab实现啊?matlab里面有现成的函数么?我看大多是点拟合曲线的.比如y1=a1*x^2+a2*x+a3,y2=b1*x^2+b2*x+b3,其中b1,b2,b3,a1,a2,a3 matlab中polyfit的 二次多项式拟合 是最小二乘拟合吗?求解释 关于Matlab拟合曲线得到的结果.我用Matlab拟合了一条曲线,得到结果后,用得到的方程计算现有数据,发现结果相差巨大,可是曲线几乎完美拟合.我用系数的时候没考虑括号里的,到底要怎么看. Eviews软件做多项式拟合问题我最近用Eviews软件做经济增长(因变量)和某一指标(自变量)的关系,其中因变量和自变量的关系不是可以用多项式拟合、幂函数拟合指数函数拟合等得到一个式子吗? 用matlab拟合的曲线 怎样才能得到它的近似表达式 编写MATLAB程序实现多项式拟合 matlab多项式二次拟合如何检验误差 知道点的坐标,用matlab拟合公式我现在做到了通过描点法绘出散布图,请问下面我要怎么做才能拟合得到这些点的公式?求具体方法 matlab 里面有多项式拟合,有没有三角函数拟合?