⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitledquxiannihe3.m

📁 数值计算实践是我们必备的一门学科!这是我在学习之余利用MATLAB编写的程序
💻 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 + -