📄 untitledquxiannihe3.m
字号:
%最小二乘曲线拟合;
t=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
y=[4.00,6.40,8.00,8.80,9.22,9.50,9.70,9.86,10.00,10.20,10.32,10.42,10.50,10.55,10.58,10.60];
plot(t,y,'r*')
legend('实验数据(ti,yi)')
xlabel('t'),ylabel('y'),
title('数据散点图') %作出原始数据点(ti,yi)的散点图;
syms a1 a2 a3 %定义三个变量a1 a2 a3;
t=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
fi=a1.*t.^2+a2.*t+a3 %令fi=a1.*t.^2+a2.*t+a3;
y=[4.00,6.40,8.00,8.80,9.22,9.50,9.70,9.86,10.00,10.20,10.32,10.42,10.50,10.55,10.58,10.60];
fi=[a1+a2+a3,4*a1+2*a2+a3,9*a1+3*a2+a3,16*a1+4*a2+a3,25*a1+5*a2+a3,36*a1+6*a2+a3,49*a1+7*a2+a3,64*a1+8*a2+a3,81*a1+9*a2+a3,100*a1+10*a2+a3,121*a1+11*a2+a3,144*a1+12*a2+a3,169*a1+13*a2+a3,196*a1+14*a2+a3,225*a1+15*a2+a3,256*a1+16*a2+a3];
fy=fi-y;fy2=fy.^2;J=sum(fy.^2) %J为误差平方和;
%为了求到a1 a2 a3使J达到最小,只需要利用极值条件J对a1,a2,a3的值为零,得到关于a1,a2,a3的线形方程组;
Ja1=diff(J,a1);Ja2=diff(J,a2);Ja3=diff(J,a3); %Ja1,Ja2,Ja3为J对a1,a2,a3的偏导;
Ja11=simple(Ja1),Ja21=simple(Ja2),Ja31=simple(Ja3) %Ja11,Ja21,Ja31为J对a1,a2,a3的偏导的最简单的形式;
A=[487696 36992 2992;36992 2992 272;2992 272 32];
B=[771842/25 68447/25 2973/10];
C=B/A,f=poly2sym(C) %求解线形方程组,得到其解就是拟合函数的系数,从而得到拟合曲线y=f(t);
ti=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
y=[4.00,6.40,8.00,8.80,9.22,9.50,9.70,9.86,10.00,10.20,10.32,10.42,10.50,10.55,10.58,10.60];
n=length(ti);
f=13.9206*ti.^2-15.1955*ti-207.6085;
t=1:0.5:16;
F=13.9206*t.^2-15.1955*t-207.6085;
fy=abs(f-y);fy2=fy.^2;EW=max(fy), %EW为最大误差;
E1=sum(fy)/n,E2=sqrt((sum(fy2))/n) %E1为平均误差,为均方根误差;
plot(ti,f,'r*'),hold on,plot(t,F,'b-'),hold off %在同一张图表中作出时间和浓度的数据点(ti,yi)和拟合曲线y=f(t)的图形;
legend('数据点(ti,yi)','拟合曲线y=f(t)'),
xlabel('t'),ylabel('y'),
title('时间和浓度的数据点(ti,yi)和拟合曲线y=f(t)的图形')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -