当前位置:文档之家› 函数逼近与曲线拟合

函数逼近与曲线拟合

实验二 函数逼近与曲线拟合报告一、问题提出从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。

在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间t 的拟合曲线。

t(分) 0 5 10 15 20 25 30 35 40 45 50 554(10)y -⨯0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64二、要求1、用最小二乘法进行曲线拟合;2、近似解析表达式为23123()t a t a t a t ϕ=++;3、打印出拟合函数()t ϕ,并打印出()j t ϕ与()j y t 的误差,1,2,,12j = ;4、另外选取一个近似表达式,尝试拟合效果的比较;5、* 绘制出曲线拟合图。

三、目的和意义1、掌握曲线拟合的最小二乘法;2、最小二乘法亦可用于解超定线代数方程组;3、探索拟合函数的选择与拟合精度间的关系。

四、实验学时:2学时五、实验步骤:1.进入C 或matlab 开发环境;2.根据实验内容和要求编写程序;3.调试程序;4.运行程序;5.撰写报告,讨论分析实验结果.解:实验步骤(一)算法流程构造a1、a2、a3的线性方程组------构造误差平方和------对a1、a2、a3求偏导数------令偏导为零求得a1、a2、a3的值。

(二)编程步骤与分析1. 绘制数据点(t,yi)的散点图输入程序为:t=[0 5 10 15 20 25 30 35 40 45 50 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].*1e-4 plot(t,y,'r*'),legend('实验数据(t,yi)')xlabel('x'), ylabel('y'),title('数据点(t,yi)的散点图'),显示结果为:2.求参数a1、a2、a3的解析表达式计算)(x f 在),(i i y x 处的函数值,即输入程序syms a1 a2 a3t=[0 5 10 15 20 25 30 35 40 45 50 55];fi=a1.*t+ a2.*t.^2+ a3.*t.^3运行后屏幕显示关于a1,a2, a3的线性方程组:fi = [ 0, 5*a1 + 25*a2 + 125*a3, 10*a1 + 100*a2 + 1000*a3, 15*a1 + 225*a2 + 3375*a3, 20*a1 + 400*a2 + 8000*a3, 25*a1 + 625*a2 + 15625*a3, 30*a1 + 900*a2 + 27000*a3, 35*a1 + 1225*a2 + 42875*a3, 40*a1 + 1600*a2 + 64000*a3, 45*a1 + 2025*a2 + 91125*a3, 50*a1 + 2500*a2 + 125000*a3, 55*a1 + 3025*a2 + 166375*a3]构造误差平方和:y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64].*1e-4;fy=fi-y; fy2=fy.^2; J=sum(fy.^2);运行后屏幕显示误差平方和如下:J=12650*a1^2+1089000*a1*a2+49967500*a1*a3- (7819978335372091569501*a1)/28823037615171174400000 + 24983750*a2^2 +2386725000*a2*a3-(31331074233255294718193*a2)/2882303761517117440000 +58593218750*a3^2-(274377591928296252150123*a3)/576460752303423488000 +520374483464852566590953249225508026224249/3323069989462289682259517 65070086144000000000000为求a1,a2, a3使J达到最小,只需利用极值的必要条件=∂∂kaJ(k=1,2,3),得到关于a1,a2, a3的线性方程组,这可以由下面的MATLAB程序完成,即输入程序Ja1=diff(J,a1); Ja2=diff(J,a2); Ja3=diff(J,a3);Ja11=simple(Ja1), Ja21=simple(Ja2), Ja31=simple(Ja3),运行后屏幕显示J分别对a1, a2 ,a3的偏导数如下Ja11 =25300*a1 + 1089000*a2 + 49967500*a3 - 27131/100000Ja21 =1089000*a1 + 49967500*a2 + 2386725000*a3 - 217403/20000Ja31 =49967500*a1 + 2386725000*a2 + 117186437500*a3 - 1903877/4000解线性方程组Ja11 =0,Ja21 =0,Ja31 =0,Ja41 =0,输入下列程序A=[25300, 1089000, 49967500; 1089000, 49967500, 2386725000; 49967500, 2386725000, 117186437500];B=[27131/100000, 217403/20000, 1903877/4000];C=B/A运行后求得系数C如下:C =2.6569e-005 -5.2948e-0073.5168e-009故所求的拟合曲线为f(x)=2.6569×10-5t-5.2948×10-7t2+3.5168×10-9t33.估计其误差,并作出拟合曲线和数据的图形输入程序:t=[0 5 10 15 20 25 30 35 40 45 50 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].*1e-4; n=length(t);f=2.6569*1e-5*t-5.2948*1e-7*t.^2+3.5168*1e-9*t.^3;tx=0:1:100;F=2.6569*1e-5*tx-5.2948*1e-7*tx.^2+3.5168*1e-9*tx.^3;fy=abs(f-y); fy2=fy.^2; Ew=max(fy),E1=sum(fy)/n, E2=sqrt((sum(fy2))/n)plot(t,y,'r*'), hold on, plot(tx,F,'b-'), hold offlegend('数据点(t,y)','拟合曲线y=f(x)'),xlabel('x'), ylabel('y'),title('数据点(t,y)和拟合曲线y=f(x)的图形')运行后屏幕显示数据(t,y)与拟合函数f 的最大误差Ew ,平均误差E1和均方根误差E2及其数据点),(i i y x 和拟合曲线y=f(x)的图形。

结果为:最大误差:Ew = 4.2350e-005平均误差:E1 = 9.0785e-006均方根误差:E2 = 1.4684e-0054.用软件自带函数进行三次多项式拟合,比较拟合效果编写程序如下:t=[0 5 10 15 20 25 30 35 40 45 50 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].*1e-4; tx=0:1:100;F=2.6569*1e-5*tx-5.2948*1e-7*tx.^2+3.5168*1e-9*tx.^3;plot(t,y,'r*'), hold on, plot(tx,F,'b-')F1=polyfit(t,y,3)F1=F1(1)*tx.^3+F1(2)*tx.^2+F1(3)*tx+F1(4);plot(tx,F1,'+'),hold offlegend('数据点(t,y)','拟合曲线y=f(x)','拟合曲线y=f1(x)'),xlabel('x'), ylabel('y'),title('数据点(t,y)、拟合曲线y=f(x)、y=f1(x)图形')结果如下图:用软件拟合的三次多项式参数为F1(1)=3.4364e-009 F1(2)=-5.2156e-007F1(3)=2.6340e-005 F1(4)=1.7839e-006故软件拟合出的三次多项式函数为:F1(x)=2.6340×10-5t-5.2156×10-7t2+3.4364×10-9t3与求得给定表达式的拟合函数f(x)=2.6569×10-5t-5.2948×10-7t2+3.5168×10-9t3相比较,对应系数值非常接近,证明了所求解解析表达式的正确性。

相关主题