您好,欢迎访问三七文档
重庆大学学生实验报告实验课程名称数学实验开课实验室DS1422学院计算机学院年级2013专业班物联网2班学生姓名卢锦晔学号20135195开课时间2014至2015学年第2学期总成绩教师签名数学与统计学院制开课学院、实验室:DS1422实验时间:2015年3月30日课程名称数学实验实验项目名称MATLAB软件入门实验项目类型验证演示综合设计其他指导教师肖剑成绩实验目的[1]熟悉MATLAB软件的用户环境;[2]了解MATLAB软件的一般目的命令;[3]掌握MATLAB数组操作与运算函数;[4]掌握MATLAB软件的基本绘图命令;[5]掌握MATLAB语言的几种循环、条件和开关选择结构。通过该实验的学习,使学生能灵活应用MATLAB软件解决一些简单问题,能借助MATLAB软件的绘图功能,对函数的特性进行探讨,广泛联想,大胆猜想,发现进而证实其中的规律。实验内容1.MATLAB软件的数组操作及运算练习;2.直接使用MATLAB软件进行作图练习;3.用MATLAB语言编写命令M-文件和函数M-文件。基础实验一、问题重述1.设有分块矩阵22322333SOREA,其中E,R,O,S分别为单位阵、随机阵、零阵和对角阵,试通过数值计算验证22S0RSREA。2.某零售店有9种商品的单件进价(元)、售价(元)及一周的销量如表1.1,问哪种商品的利润最大,哪种商品的利润最小;按收入由小到大,列出所有商品及其收入;求这一周该10种商品的总收入和总利润。表1.1货号123456789单件进价7.158.253.2010.306.6812.0316.8517.519.30单件售价11.1015.006.0016.259.9018.2520.8024.1515.50销量5681205753580395210415388106943.建立一个命令M-文件:求所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+33。4.编写函数M-文件sq.m:用迭代法求ax的值。求平方根的迭代公式为)a(211nnnxxx迭代的终止条件为前后两次求出的x的差的绝对值小于105。5.近景图将x的取值范围局限于较小的区间内可以画出函数的近景图,用于显示函数的局部特性。局部放大在绘图时,把x的范围逐渐缩小,可把函数的细节部分展现的很清楚.特别是观察极限问题时,这种方法比较便利.远景图函数的远景图,是把x的范围取得比较大,使我们能够在大范围内观察函数图像.当研究x趋向于∞时,这种方法给我们带来方便.1)比较函数33)(,)(,)(xxhxxxgxxf在x→0时函数的性态。观察到什么现象?从观察到的现象,反映了什么结论。2)在日常生活中我们有这样的经验:与幂函数相比,指数函数是急脾气,对数函数是慢性子。这就是说,当x→∞时,再小的指数函数也比幂函数变化快,再大的对数函数也比幂函数变化慢。当x→∞时,比较10xy与xy1.1的大小.当x→∞时,比较001.0xy与xylg1000的大小.3)在同一个坐标下作出y1=ex,y2=1+x,y3=1+x+(1/2)x2,y4=1+x+(1/2)x2+(1/6)x3这四条曲线的图形,要求在图上加各种标注,观察到什么现象?发现有什么规律?同时用subplot分别在不同的坐标系下作出这四条曲线,为每幅图形加上标题。4).作出下列曲面的3维图形,)sin(22yxz;5).作出函数y=x4-4x3+3x+5(x[0,6])的图形,用小红点标出其在[0,6]之间的最小值点,并在最小值点附近标出该最小值点的坐标值;二、实验过程(一般应包括实验原理或问题分析,变量说明、程序、调试情况记录、图表等,实验结果及分析)1.源程序:E=eye(3,3)R=rand(3,2)O=zeros(2,3)a=[32]S=diag(a)A=[ER;OS]B=[ER+R*S;OS^2]IfB==A^2disp('right')elsedisp('wrong’)end运行结果:E=100010001R=0.27850.96490.54690.15760.95750.9706O=000000a=32S=3002A=1.0000000.27850.964901.000000.54690.1576001.00000.95750.97060003.0000000002.0000B=1.0000001.11402.894701.000002.18750.4728001.00003.83002.91180009.0000000004.0000Right分析:在该题中应该注意’*’与’.*’的区别,避免不必要的错误。题中涉及的矩阵函数有eye、Rand、zeros、diag等,还有矩阵合并和结果输出的有关知识。2.源程序:a=1:9b=[7.158.253.2010.306.6812.0316.8517.519.30]c=[11.1015.006.0016.259.9018.2520.8024.1515.50]d=[568120575358039521041538810694]x=c.*dprofit=(c-b).*df=sum(x)g=sum(profit)[income,number]=sort(x)运行结果:分析:此题最重要的部分是sort函数的应用,实现数组元素的排序和输出其在数组中对应的位置。另外,从中我还学会了利用数组对一系列的数据进行运算处理。3.计算程序fora=1:1:9forb=0:1:9forc=0:1:9A=a*100+b*10+c;ifA==a^3+b^3+c^3disp(A)endendendend最终结果:153370371407分析:此题使我进一步熟悉了循环语句for、while等的基本格式和应用方法,值得注意的是每一个循环语句或条件语句的出现,必定要对应的出现一个end,这一点很容易忽视。4.源程序:functionf=sq(a)ifa=0x=eps;y=1/2*(x+a/x);while(abs(x-y)=10^(-5))x=yy=1/2*(x+a/x)endf=xelsedisp('theirexisterrors')end运行结果调用sq(16),输出结果是4.0000分析:此题要求掌握利用循环语句进行迭代,实现开方方程的求解,另外x的取值有一定的讲究,在该题题设的情况下,很显然x=0,但从迭代公式的形式可以得到,x不能等于0,这就要求x从一个较为接近0的数开始取,于是就得引用eps(计算机能辨别的最小值)。5.(1)源程序:x=-1:0.0001:1;y1=x;y2=x.^3;y3=y1+y2;plot(x,y1,x,y2,x,y3)运行结果分析当x→0时,f(x)与g(x)很接近,而h(x)与前两个函数都不接近。(2)源程序:x=linspace(5000,8000,500);y1=x.^10;y2=1.1.^x;Subplot(1,2,1),plot(x,y1),xlabel('x');ylabel('y)');grid;title('y=x^1^0');Subplot(1,2,2),plot(x,y2),xlabel('x');ylabel('y)');grid;title('y=1.1^x');运行结果分析:从上图可以看出来指数函数变化快源程序:x=linspace(5000,8000,500);y1=x.^0.001;y2=1000.*log(x);Subplot(1,2,1),plot(x,y1),xlabel('x');ylabel('y)');grid;title('y=x^0.001');Subplot(1,2,2),plot(x,y2),xlabel('x');ylabel('y)');grid;title('y=1000.*log(x)');运行结果分析:由以上函数图形可知对数函数变化比幂函数慢。(3)源程序:x=linspace(0,2.50);y1=exp(x);y2=1+x;y3=1+x+0.5.*x.^2;y4=1+x+0.5.*x.^2+1./6.*x.^3;plot(x,y1,'b.'),gtext('y1=exp(x)');holdon,plot(x,y2,'y-'),gtext('y2=1+x');plot(x,y3,'g:'),gtext('y3=1+x+0.5.*x.^2');plot(x,y4,'m--'),gtext('y4=1+x+0.5.*x^2+1./6.*x.^3');holdoff作图结果(4)作图程序x=-10:0.6:10;y=x;[X,Y]=meshgrid(x,y);Z=sin(pi.*sqrt(X.^2+Y.^2));surf(X,Y,Z)xlabel('x')ylabel('y')zlabel('z')title('z=sin(pi*sqrt(x.^2+y.^2)')shadingflat作图结果分析:在该题中,需要用到三维作图相关函数meshgrid、mesh、surf,注释函数xlabel、ylabel、zlabel、title和开方函数sqrt,最后还涉及到了幂函数等。通过这道题,我充分运用并巩固了作图方面的基础知识。(5)作图程序x=0:0.1:6;y=x.^4-4.*x.^3+3.*x+5;plot(x,y)[y1,x1]=min(y);holdonplot(x(x1),y1,'r.','MarkerSize',20)holdoffa=['x=',num2str(x(x1))];b=['y=',num2str(y1)];min=char(a,b);text(x(x1),y1+50,min)作图结果6.自由发挥:自己提出问题,实验探索,广泛联想,发现规律,大胆猜想。比如函数cos(1/x)在x=0附近的振荡现象,有无规律可寻?问题用两种方法在同一个坐标下作出y1=x2,y2=x3,y3=x4y4=x5这四条曲线的图形,并要求用两种方法在图上加各种标注。程序(1)x=linspace(-2,2,40);y1=x.^2;y2=x.^3;y3=x.^4;y4=x.^5;plot(x,y1,'m')holdon,plot(x,y2,'r');plot(x,y3,'g');plot(x,y4,'k');holdofftext(-0.6,0.4,'\leftarrowy1=x^2')text(-0.9,0.2,'y2=x^3\rightarrow')text(-0.9,-0.1,'y3=x^4\rightarrow')text(-0.8,-0.6,'\leftarrowy4=x^5')xlabel('x')ylabel('y')title('ͼʾ')程序(2)x=linspace(-1,1,20)y1=x.^2;y2=x.^3;y3=x.^4;y4=x.^5;plot(x,y1,x,y2,x,y3,x,y4)gtext('y1=x^2');gtext('y2=x^3');gtext('y3=x^4');gtext('y4=x^5')xlabel('x')ylabel('y')title('curves')分析在表达乘方的时候要用“y1=x.^2”的形式,在表达x分量的时候可以用linspace和直接用生成数组的形式。主要函数:plot:生成图片;holdon和oldoff用来在同一幅图中描图;text:用程序对图片加标注;gtext:用鼠标在图中加字符;title:用于对图片加标题。总结与体会通过该实验的学习,我更加熟悉掌握了MATLAB的作图、数组运算、基本函数的表达与应用,能灵活利用MATLAB软件解决一些简单问题,能借助MATLAB软件的绘图功能,了解一般情况下不易被我们所认知的函数的一些特性,并且能够利用数组、循环语句等基本知识实现迭代法
本文标题:数学实验1
链接地址:https://www.777doc.com/doc-2331231 .html