1、曲线拟合的最小二乘法 1、 %采用二次多项式拟合 %a的输出为多项式各项系数 %b为拟合曲线各点函数值 %phi为输出的曲线拟合函数 x=0:5:55; y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64]; a=polyfit(x,y,2) b=polyval(a,x) syms t phi=a(1)*t^2+a(2)*t+a(3) 运行结果: >> leastway a = -0.0024 0.2037 0.2305 b = Columns 1
2、 through 5 0.2305 1.1894 2.0293 2.7502 3.3521 Columns 6 through 10 3.8349 4.1987 4.4435 4.5693 4.5760 Columns 11 through 12 4.4637 4.2324 phi = 2 -0.00238051948051948162 t + 0.203690809190809258 t + 0.
3、230467032967031749 2、 %采用三次多项式拟合 x=0:5:55; y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64]; a=polyfit(x,y,3) b=polyval(a,x) syms t phi=a(1)*t^3+a(2)*t^2+a(3)*t+a(4) 运行结果: >> leastway a = 0.0000 -0.0052 0.2634 0.0178 b = Columns 1 through 5
4、 0.0178 1.2087 2.1646 2.9113 3.4745 Columns 6 through 10 3.8800 4.1536 4.3211 4.4082 4.4407 Columns 11 through 12 4.4444 4.4450 phi = 3 2 0.0000343641543641541613 t - 0.00521556221
5、556219567 t + 0.263398527398526872 t + 0.0178388278388323038 3、 %delta为拟合函数值与原函数值的误差 clc clear x=0:5:55; y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64]; a=polyfit(x,y,3); b=polyval(a,x); for j=1:12 delta=b(j)-y(j) end syms t phi=a(1)*t^3+a(2)*t^2+a(3)*t+
6、a(4) 运行结果: delta = 0.0178 delta = -0.0613 delta = 0.0046 delta = 0.0513 delta = 0.0345 delta = 0.0100 delta = 0.0036 delta = -0.0489 delta = -0.1018 delta = -0.1393 delta =
7、0.4244 delta = -0.1950 phi = 3 2 0.0000343641543641541613 t - 0.00521556221556219567 t + 0.263398527398526872 t + 0.0178388278388323038 4、 %采用四次多项式拟合与三次多项式拟合进行比较 %输出其与原函数值的误差再与之前输出的三次与原函误差进行比较 %delta4为四次
8、与原函的误差 clc clear x=0:5:55; y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64]; a=polyfit(x,y,4); b=polyval(a,x) for j=1:12 delta4=b(j)-y(j) end syms t phi=a(1)*t^4+a(2)*t^3+a(3)*t^2+a(4)*t+a(5) 运行结果: b = Columns 1 through 5 0.0604 1.1739 2.1220 2.894
9、5 3.4900 Columns 6 through 10 3.9162 4.1898 4.3366 4.3914 4.3981 Columns 11 through 12 4.4095 4.4876 delta4 = 0.0604 delta4 = -0.0961 delta4 = -0.0380 delta4 = 0.0345 delta4 = 0.0500 delta4 =
10、 0.0462 delta4 = 0.0398 delta4 = -0.0334 delta4 = -0.1186 delta4 = -0.1819 delta4 = 0.3895 delta4 = -0.1524 phi = -6 4 3 0.602564102564107288 10 t - 0.
11、0000319178969178975504t 2 - 0.00293227466977464190 t +0.238069314944314520t + 0.0604487179487194770 5、 %分别采用二次、四次、六次、九次多项式拟合并画出其曲线进行比较 clc clear x=0:5:55; y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64]; a2=polyf
12、it(x,y,2); b2=polyval(a2,x); a4=polyfit(x,y,4); b4=polyval(a4,x); a6=polyfit(x,y,6); b6=polyval(a6,x); a9=polyfit(x,y,9); b9=polyval(a9,x); plot(x,b2,'r-^'); hold on plot(x,b4,'g->'); hold on plot(x,b6,'b-*'); hold on plot(x,b9,'y-+'); hold on plot(x,y,'ko'); title('含碳量-时间曲线'); xla
13、bel('时间t(分)'); ylabel('含碳量y(10^-^4)'); legend('二次拟合曲线', '四次拟合曲线', '六次拟合曲线', '九次拟合曲线', '原函数点',); 运行结果: 警告: 多项式未正确设置条件。请添加具有不同 X 值的点,减少多项式的阶数,或者尝试按照 HELP POLYFIT 中所述进行居中和缩放。 > In polyfit at 75 In leastway at 9 警告: 多项式未正确设置条件。请添加具有不同 X 值的点,减少多项式的阶数,或者尝试按照 HELP POLYFIT 中所述进行居中和缩放。 > In polyfit at 75 In leastway at 11 局部放大图






