资源描述
曲线拟合的最小二乘法
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 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.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
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.00521556221556219567 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+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 =
0.4244
delta =
-0.1950
phi =
3 2
0.0000343641543641541613 t - 0.00521556221556219567 t
+ 0.263398527398526872 t + 0.0178388278388323038
4、
%采用四次多项式拟合与三次多项式拟合进行比较
%输出其与原函数值的误差再与之前输出的三次与原函误差进行比较
%delta4为四次与原函的误差
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.8945 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 =
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.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=polyfit(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('含碳量-时间曲线');
xlabel('时间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
局部放大图
展开阅读全文