当前位置:文档之家› 实验四

实验四

实验四数据分析与多项式计算
一、实验目的
1.掌握数据统计和分析的方法。

2.掌握数据插值与曲线拟合的方法及其应用。

3.掌握多项式的常用运算。

二、实验的设备及条件
计算机一台(带有MATLAB7.0以上的软件环境)。

设计提示
参考本节主要内容,学习并理解相关函数的含义及调用方法。

三、实验内容、程序代码及相关分析
1、利用matlab提供的randn函数生成符合正态分布的10x5随机矩阵A,
进行以下操作:
(1)A各列元素的均值和标准方差
(2)A的最大元素和最小元素
(3)求A每行元素的和以及全部元素之和
(4)分析对A的每列元素按升序、每行元素按降序排列。

程序代码如下:
A=randn(10,5);
MEAN=mean(A) %求列均值
STD=std(A) %求各列标准方差
MAX=max(max(A)) %求A的最大元素
MIN=min(min(A)) %求A的最大元素
SUM1=sum(A,2) %求A每行元素的和
SUM2=sum(sum(A)) %求A中所有元素的和
SORT1=sort(A) %将A中每列元素按升序排列
SORT2=sort(A,2,'descend') %将A中每行元素按降序排列
实验结果如下:
结果分析:主要应用了mean,std,max,min等常用函数的一些功能,此处主要注意一下相关函数的一些参数,尤其注意max,min,mean的参数问题,因为他们加入相应的参数可以区分统计的是行还是列
2、按要求对指定函数进行插值和拟合:按下表所示用三次样条方法插值计算0~90°内整数点的正弦值和0~75°内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。

特殊角的正弦与正切值表
实验代码:
X1=0:15*pi/180:90*pi/180; %设定sinx1中x1的值
X2=0:15*pi/180:75*pi/180; %设定tanx2中的x2的值
Y1=sin(X1); %利用函数求出所有的sinx1的值
Y2=tan(X2); %利用函数求出所有的tanx2的值
N1=0:1*pi/180:90*pi/180; %对sinx1设定取样点n1
N2=0:1*pi/180:75*pi/180; %对tanx2设定取样点n2
Y11=interp1(X1,Y1,N1,'spline') %对sinx1采用3次样条插值计算N1
p1=polyfit(X1,Y1,5); %利用拟合sinx1的5次多项式的系数
Y21=polyval(p1,N1) %利用5次拟合sinx1计算采样点N1
Y12=interp1(X2,Y2,N2,'spline') % 对tanx2采用3次样条插值计算N2 p2=polyfit(X2,Y2,5); % 利用拟合tanx1的5次多项式的系数
Y22=polyval(p2,N2) % 利用5次拟合tanx2计算采样点N2
subplot(1,2,1) %将图像窗口分为1行2列,选择第1个画图
plot(X1,Y1,'b--s',N1,Y21,'r+')%sinx1插值与拟合前后图象对比subplot(1,2,2)
plot(X2,Y2,'b--s',N2,Y22,'r:+') %tanx2插值与拟合前后图象对比
实验结果:
(全局图)(放大图)
实验结果分析:将两个图形放大分析,可以看到用5次曲线拟合的曲线更加平滑,并且精度也更高。

3、有两个多项式P(x)=2x4-3x3+5x+13,Q(x)=x2+5x+8,试求P(x)、
P(x)Q(x)以及P(x)/Q(x)的导数。

程序代码如下:
P=[2,-3,0,5,13]
Q=[1,5,8]
p1=polyder(P) %求P的导数
p2=polyder(P,Q) %求P*Q的导数
[p,q]=polyder(P,Q) %求P/Q的导数
实验结果如下:
实验结果分析:主要是注意polyder求导函数的用法。

在形式上就是给出一
个向量用来表示各项系统,以此来表示一个多项式,此处注意[p,q]=polyder(P,Q)
的用法,p用来存放求导后分子上的多项式,Q为求导后的分母上的多项式。

4、有3个多项式p1(x)=x4+2x3+4x2+5,p2(x)=x+2,p3(x)=x2+2x+3,
试进行下列操作:
(1)、求p(x)=p1(x)+p2(x)p3(x);
(2)、求p(x)的根;
(3)、当x取矩阵A的每一元素时,求p(x)的值,其中A=[-1,1.2,-1,4;0.75,2,3.5;0,5,2.5] (4)、当以矩阵A为自变量时,求p(x)的值。

其中A的值与(3)相同。

实验代码如下:
P1=[1,2,4,0,5];
P2=[1,2];
P3=[0,1,2,3]; %为了和P1相加时匹配,在前面补一个0
P=P1+conv(P2,P3) %求p(x)=p1(x)+p2(x)p3(x)x=roots(P) %求p的根
A=[-1,1.2,-1.4;0.75,2,3.5;0,5,2.5]
y=polyval(P,A) %求矩阵A对应的自变量的每一个函数值
y1=polyvalm(P,A) %求矩阵A为自变量的函数值
y2=polyval(P,A)
实验结果如下:
实验结果分析:
此处需要注意polyval(P,A)和polyvalm(P,A)的区别。

前者是把A中的每个元素
提取出来代入到P (x )中计算结果,计算得到的结果放到新矩阵相应取元素的那个位置,而后者则是把A 这个矩阵当做一个整体代入到P (x )中计算值,最后得到的矩阵是一个全新的矩阵。

此处还要注意在进行多项式之间的加减时
5
p
为压力值,u 为电压值,试用多项式
d cp bp ap p u +++=23)(来拟合其特性函数,求出a,b,c,d ,
并把拟合曲线和各个测试数据点画在同一幅图上。

实验代码如下:
p=[0.0,1.1,2.1,2.8,4.2,5.0,6.1,6.9,8.1,9.0,9.9]; u=[10,11,13,14,17,18,22,24,29,34,39]; c=polyfit(p,u,3) %将原始数据进行3次拟合,并求出3次多项式系数存入到c 向量中 y1=polyval(c,p); %用拟合后的曲线反过来就测试点在拟合曲线上的值 plot(p,u,'r:*',p,y1,'b:*') % 将两个图形绘在同一个窗口里
实验结果如下:
(全局图形) (放大图形)
实验结果分析:可以看到在u(p)中各系数为:
a=0.0195,b=-0.0412,c=1.4469,d=9.8267
从全局图形和放大图形中可以看到用3次拟合后,让原始图趋近平
滑,让其变化更有规律性.
四、实验总结
1.通过本次实验让我对matlab强大的数据分析和多项式运算有了一个比较清晰的认识,其中利用一些常用的mean,max,min,sum,cumsum等可以对一组数据很好地进行统计处理,以前对于一组数据想要找出其中的规律往往是束手无策,但这次实验中教会我如何利用matlab的数据插值来估算采样点的值,利用强大的曲线拟合可以快速找出这组数据之间的规律,用一个多项式来拟合,并且也可以精确地估算采样点的值。

2.实验中用拟合通过绘图能让一组杂乱离散的数据直观地显示其变化的规律,并能提高到一定的精度。

3.做实验时虽然照着书本上面的例题就基本上能做完实验,但在做实验时也会遇到一些问题,比如在计算多项式的加法时关于向量的匹配问题,还有一些参数的作业也尤其在统计数据时关于是行还是列的一些参数问题。

相关主题