作业帮 > 综合 > 作业

我已知两组数据,用polyfit拟合后,得出P值,但是将数据回带后误差很大

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/30 06:42:40
我已知两组数据,用polyfit拟合后,得出P值,但是将数据回带后误差很大
我的代码为:
x=[1.9 2.2 2.7 3.0 3.4 3.6 3.9 4.0 5.1 6.8 8.5 9.2 10.7 11.6 12.9 15.3 17.1 18 19 20 21.6 22.4 23.7 24 26.8 33.7 36.7 44.9 57 67 72 81 98 116 122 140 190 210 220 231 267 680 950 1210 1370 1430 1470 1480 1500 1500];
y=[11 12 13 14 15 16 17 19 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 120 140 160 180 200 250 300 350 400 450 500 600 700 800 900 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000];
plot(x,y,'green')
p=polyfit(x,y,4);
y1=p(1)*x.^4+p(2)*x.^3+p(3)*x.^2+p(4)*x+p(5);
hold on
plot(x,y1,'red')
hold off
axis([10,11000,1,1600]);
xlabel('功率/mw');
ylabel('电压');
怎么拟合才对?要求误差小一点.我看拟合前后两个曲线,感觉误差不大,但是带入公式后,发现误差好大,
我已知两组数据,用polyfit拟合后,得出P值,但是将数据回带后误差很大
6次拟合,误差小点
x=[1.9 2.2 2.7 3.0 3.4 3.6 3.9 4.0 5.1 6.8 8.5 9.2 10.7 11.6 12.9 15.3 17.1 18 19 20 21.6 22.4 23.7 24 26.8 33.7 36.7 44.9 57 67 72 81 98 116 122 140 190 210 220 231 267 680 950 1210 1370 1430 1470 1480 1500 1500];
y=[11 12 13 14 15 16 17 19 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 120 140 160 180 200 250 300 350 400 450 500 600 700 800 900 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000];
plot(x,y,'green')
p=polyfit(x,y,6);
y1=p(1)*x.^6+p(2)*x.^5+p(3)*x.^4+p(4)*x.^3+p(5)*x.^2+p(6)*x+p(7);
x2 = 1:1500;
y2=p(1)*x2.^6+p(2)*x2.^5+p(3)*x2.^4+p(4)*x2.^3+p(5)*x2.^2+p(6)*x2+p(7);
hold on
plot(x,y1,'red')
plot(x2,y2,'b')
hold off
% axis([10,11000,1,1600]);
xlabel('功率/mw');
ylabel('电压');
再问: 可是误差还是很大啊,用6次拟合的公式为: y=-0.0002*x^3+0.045*x^2-0.173*x+44.8886 比如计算,当x=1430,得出的y值竟然是负值,这是怎么回事呀? PS :用4次拟合的公式为: y=0.0198*x^2+0.3947*x+56.0049,计算误差怎么会这么大大,~~~~(>_