作业帮 > 综合 > 作业

matlab 曲线拟合得到的结果为1.0e+003 *-0.0000如何解决?

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/04/30 09:46:52
matlab 曲线拟合得到的结果为1.0e+003 *-0.0000如何解决?
代码:
data=xlsread('D:\123.xls');
x=data(:,2);
y=data(:,1);
p=polyfit(x,y,5)
y1=polyval(p,x);
plot(x,y,'ro',x,y1);
legend('原始数据点','拟合曲线');
xlabel('年份');
ylabel('相关数据');
axis([0 220 800 1300])
grid
得到的结果:
p = 1.0e+003 * -0.0000 0.0000 -0.0000 0.0002 -0.0079 1.0725
我后面还要求极值点,系数这么小的话,求出来的结果明显不合理,是我的函数选择错误了吗?还是其他原因?
matlab 曲线拟合得到的结果为1.0e+003 *-0.0000如何解决?
系数不小吧.还要乘以10^3呢.你把系数都变成2位小数看看.
再问: 1.0e+003 * -0.0000 0.0000 -0.0000 这三个系数几乎都是零,应该怎么处理呢?
再答: 乘以1000了还是0啊?那可能跟你的数据有关。你的自变量是年份,那都是1000以上的数,然后你的因变量如果比较小的话,自然系数就很小啊。你可以把年份改成从1开始。
再问: 还是有几点疑惑: 一、我把年份编号了,所以自变量是是1—220,因变量是都是800到1300之间的数,之后我要求极值点,直接观察图片的话,可以明显看到其极值点是40和140左右,但如果用现在的系数的话根本没有办法直接求出其极值点。 二、我想用下列代码求导,但出现Error: Missing MATLAB operator.,应该是系数的原因吧? Syms x y y=diff(1.0e+003*-0.0000x^5+0.0000*x^4-0.0000*x^3+0.0002*x^2-0.0079*x+1.0725) vpa(y)
再答: Missing Matlab operator是指缺少运算符。 而且你写成这样是要干什么啊: ”y=diff(1.0e+003*-0.0000x^5+0.0000*x^4-0.0000*x^3+0.0002*x^2-0.0079*x+1.0725)“ 他虽然这么输出,但是你这么写进去,他就看不懂啊。 你应该写:(我不大清楚这个polyfit输出系数的顺序是什么,你要把他按顺序乘进去哈) y=p*[1;x;x^2;x^3;x^4;x^5] y=diff(y) 这样才行 另外,vpa是什么啊 多项式求根用solve或者fsolve吧。