当前位置:文档之家› 数学实验-实验2 插值与拟合

数学实验-实验2 插值与拟合

广州大学学生实验报告
开课学院及实验室: 2014年 月 日
学院
数学与信息科学学院
年级、专业、班
姓名
学号
实验课程名称 数学实验 成绩 实验项目名称
实验2 插值与拟合
指导老师
一、实验目的
1、掌握用MATLAB 计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。

2、掌握用MATLAB 作线性最小二乘拟合的方法。

3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意二者的联系和区别。

二、实验设备
电脑、MATLAB
三、实验要求
1..选择一些函数,在n 个节点上(n )不要太大,如5~11)用拉格朗日,分段线性,三次样条三种插值方法,,计算m 各插值点的函数值(m 要适中,如50~100).通过数值和图形的输出,将三种插值结果与精确值进行比较.适当增加n ,再作比较,由此作初步分析.下列函数供选择参考: a. y=sin x ,0≦x ≦2π;
2.用
1
2
y x
=在x=0,1,4,9,16产生5个节点15,...,P P .用不同的节点构造插值公式来计算x=5处的插值(如用
15,...,P P ;14,...,P P ;24,...,P P 等)与精确值比较进行分析。

5.对于实验1中的录像机计数器,自己实测一组数据(或利用给出的数据),确定模型2
t an bn =+中的系数a,b.
6.用电压V=10伏的电池给电容器充电,电容器上t 时刻的电压为
0()()t
v t V V V e

=--,其中
0V 是电容器的初始
电压,τ是充电常数。

试由下面一组t ,V 数据确定0V 和τ.
t/s 0.5 1 2 3 4 5 7 9 V/V 6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63
8. 弹簧在力F 的作用下伸长x ,一定范围内服从胡克定律:F 与x 成正比,即F=kx,k 为弹性系数.现在得到下面一组x ,F 数据,并在(x,F )坐标下作图(图13).可以看出,当F大到一定数值(如x=9以后)后,就不服从这个定律了。

试由数据拟合直线F=kx,并给出不服从胡克定律时的近似公式(曲线)。

1)要求直线与曲线在x=9处相连接。

2)要求直线与曲线在x=9处光滑连接.
四、实验程序
预备:
function y=lagr1(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j)); end end
s=s+p*y0(k); end y(i)=s; end
五、实验操作过程
当n=5时 clear; n=5;
%在n 个节点上进行插值 m=75;
%产生m 个插值点,计算函数在插值点处的精确值,将来进行对比
x=0:4/(m-1):2*pi; y=sin(x); z=0*x;
x0=0:4/(n-1):2*pi; y0=sin(x0); y1=lagr1(x0,y0,x); % y1为拉格朗日插值 y2=interp1(x0,y0,x); % y2为分段线性插值 y3=spline(x0,y0,x); % y3为三次样条插值 [x' y' y1' y2' y3']
plot(x,z,'k',x,y,'r:',x,y1,'g-.',x,y2,'b',x,y3,'y--') gtext('Lagr.'), gtext('Pieces. linear'), gtext('Spline'), gtext('y=sin(x)') hold off;
%比较插值所得结果与函数在插值点处的精确值 s = ' x y y1 y2 y3' [x' y' y1' y2' y3']
结果
ans = 0 0 0 0 0 0.0541 0.0540 0.0495 0.0455 0.0611 0.1081 0.1079 0.0999 0.0910 0.1207 0.1622 0.1615 0.1510 0.1365 0.1787 0.2162 0.2145 0.2025 0.1819 0.2350 0.2703 0.2670 0.2541 0.2274 0.2896 0.3243 0.3187 0.3054 0.2729 0.3425 0.3784 0.3694 0.3563 0.3184 0.3936 0.4324 0.4191 0.4066 0.3639 0.4429 0.4865 0.4675 0.4559 0.4094 0.4904 0.5405 0.5146 0.5040 0.4548 0.5359 0.5946 0.5602 0.5508 0.5003 0.5796 0.6486 0.6041 0.5961 0.5458 0.6212 0.7027 0.6463 0.6396 0.5913 0.6609 0.7568 0.6866 0.6812 0.6368 0.6985 0.8108 0.7248 0.7208 0.6823 0.7341 0.8649 0.7610 0.7583 0.7278 0.7675
2.
x0=[0 1 4 9 16];y0=sqrt(x0);x=5;y=sqrt(5)
y1=lagr(x0,y0,x)
x0(1)=[];y0=sqrt(x0);y2=lagr(x0,y0,x)
x0(4)=[];y0=sqrt(x0);y3=lagr(x0,y0,x)
x0(1)=[];y0=sqrt(x0);y4=lagr(x0,y0,x)
结果
y = 2.2361
y1 = 2.0794
y2 = 2.2540
y3 = 2.2667
y4 = 2.2000
5.
n=[0000 1153 2045 2800 3466 4068 4621 5135 5619 6152]; t=[0 20 40 60 80 100 120 140 160 183.5];
aa=polyfit(n,t,2)
a=aa(1)
b=aa(2)
c=aa(3)
y=polyval(aa,n);
plot(n,t,'*',n,y,'m')
xlabel('n')
ylabel('t')
结果
aa =0.0000 0.0144 0.0498
a =2.5083e-006
b =0.0144
c =0.0498 6.
t=[0.5 1 2 3 4 5 7 9];
v1=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63]; y=log(10- v1);
f=polyfit(t,y,1)
t0=-1/f(1)
v0=10-exp(f(2))
v2=10-(10-v0)*exp(-t/t0);
plot(t,v1,'rx',t,v2,'k:')
grid on
xlabel('时间t(s)'),ylabel('充电电压(V)');
title('电容器充电电压与时间t的曲线');
结果
f =-0.2835 1.4766
t0 =3.5269
v0 =5.6221
8.
x0=[1 2 4 7 9];
y0=[1.5 3.9 6.6 11.7 15.6];
k=y0/x0
x1=[9 12 13 15 17];
y1=[15.6 18.8 19.6 20.6 21.1];
aa=polyfit(x1,y1,2);
a=aa(1);
b=aa(2);
c=aa(3);
ans=[a b c]
结果
k =1.7086
a1 =-0.0839 2.8922 -3.8459
024681012141618
5
10
15
20
25。

相关主题