1、数学实验第一章,数学实验与MATLAB 向量创建与一元函数图形 矩阵创建与二元函数图形 数据显示与字符串操作, ,例1.6 给定 =150,300,450,600 , 计算 sin 的值,alpha=15, 30, 45, 60*pi/180; sin(alpha),创建向量三种基本方法:使用方栝号、使用冒号、使用等分函数。,ans = 0.2588 0.5000 0.7071 0.8660,方括号直接输入法是创建向量(和矩阵)的常用方法,输入时将向量元素用方括号“ ”括起来, 元素之间用逗号(或空格)隔开., alpha=(15:15:60)*pi/180;sin(alpha),例1.8 用
2、线性等分函数linspace( )创建0, 2上的等分点,绘出正六边形和正十二边形.,冒号表达式创建向量使用格式 x = x0:step:xn 当步长 step=1 时可省略为 x = x0:xn 当步长 step 为负数时 x0 应大于 xn,alpha=linspace(0,2*pi,7) bata=linspace(0,2*pi,13); x1=cos(alpha);y1=sin(alpha); x2=cos(bata);y2=sin(bata); plot(x1,y1,x2,y2,r),向量创建与一元函数图形,在解决实际问题时,如果频繁使用同一个数学表达式,则应该定义一个临时函数以方便
3、操作.,定义方法: 函数名= inline(表达式),fun=inline(x.*sin(1./x) fplot(fun,-0.15,0.15) N=1:5;x=2./(2*N+1)/pi; y=fun(x),y = -0.2122 0.1273 -0.0909 0.0707 -0.0579,向量创建与一元函数图形,ezplot() 简易绘图方法,优点:快速方便 fplot() 函数绘图方法,与简易绘图相似.要给定 自变量变化范围 plot() 基本绘图方法,利用一元函数自变量的一系列数据和对应函数值数据绘图。具有很大灵活性 例如 plot(X,Y), plot(x1,y1,x2,y2)plo
4、t(X,Y,r), plot(x1,y1,r,x2,y2,b),向量创建与一元函数图形,MATLAB 一元函数绘图方法,例1.13用基本绘图方法绘衰减振荡函数y = e 0.5xsin 5x 的图形并用虚线表示振幅衰减情况。,x=0:0.1:4*pi; y= exp(-0.5*x) ; y1=y .*sin(5*x); plot(x,y1,x,y,-r,x,-y,-r),例1.14 绘抛射曲线簇程序如下,alpha=pi*(1:30)/60; v0=515;g=9.8; T=2*v0*sin(alpha)/g t= (0:16) *T /16; x=v0*t*diag(cos(alpha);
5、y=v0*t*diag(sin(alpha)-g*t.2/2; plot(x,y,r),程序运行后命令窗口将显示( ) (A)30个不同发射角数据; (B)30个发射角对应的飞行时间; (C) 30个发射角对应的射程; (D)按列计算的曲线第二坐标。,B,它们是由以原点为公共点的玫瑰花瓣环线组成。用极坐标绘图命令polar()可实现快速绘图,几何图形表现出完美的对称性。,三叶玫瑰线方程,极坐标方程为 = a cos n 或 = a sin n 的图象以形似玫瑰而被称为玫瑰线,,theta=0:0.001:2*pi; r=cos(3*theta); polar(theta,r,k),n=3;N=
6、10000; theta=2*pi*(0:N)/N; r=cos(n*theta); x=r.*cos(theta); y=r.*sin(theta); comet(x,y),ezplot(sin(3*t)*cos(t),sin(3*t)*sin(t),0,pi),例1.17 用直接方法创建3阶希尔伯特矩阵,format rat H=1,1/2,1/3;1/2,1/3,1/4;1/3,1/4,1/5 bar3(H),H =1 1/2 1/3 1/2 1/3 1/4 1/3 1/4 1/5,注意事项 矩阵元素必须在方括号 之内; 同一行相邻元素间用逗号或空格分隔; 矩阵的行与行之间用分号分隔.,
7、矩阵创建常用方法,1.直接输入法; 2.特殊矩阵函数法; 3. 数据文件输入,B =9 -36 30-36 192 -18030 -180 180,直接输入法,特殊矩阵函数法,A=hilb(3) %用函数创建希尔伯特矩阵 B=invhilb(3) %创建希尔伯特矩阵的逆阵 A*B %验证B为A的逆,ans =1 0 00 1 00 0 1,A =1 1/2 1/3 1/2 1/3 1/4 1/3 1/4 1/5,特殊矩阵函数表 ,例: 创建4阶幻方矩阵A,并验证矩阵A各列元素之和、各行元素之和以及各对角元之和均为常数 34 。,A =16 2 3 135 11 10 89 7 6 124 14
8、 15 1,A=magic(4) sum(A) %求列和 sum(A) %求行和 sum(diag(A) %求A对角和 B=A(:,4:-1:1) %矩阵翻转 sum(diag(B) %求B对角和,ans = 34 34 34 34,MATAB命令A=magic(3); Sum(sum(A)显示计算结果为() (A) 15;(B) 30;(C) 45;(D) 60.,c,X =-2 -1 0 1 2-2 -1 0 1 2-2 -1 0 1 2-2 -1 0 1 2-2 -1 0 1 2,创建网格矩阵命令: X, Y=meshgrid(x, y),例1.19 计算二元函数 z = x exp(
9、x2 y2)网格点值X,Y=meshgrid(-2:2,-2:2)Z=X.*exp(-X.2-Y.2),Y =-2 -2 -2 -2 -2-1 -1 -1 -1 -10 0 0 0 01 1 1 1 12 2 2 2 2,二元函数图形绘制方法: 矩阵表示网格、计算网格(X,Y)上函数值、绘网面,创建网格矩阵原理和方法,x=1:6; y=1:8; %创建两个向量 X,Y=meshgrid(x,y) %将x和y分别扩充为8行6列,X =1 2 3 4 5 61 2 3 4 5 61 2 3 4 5 61 2 3 4 5 61 2 3 4 5 61 2 3 4 5 61 2 3 4 5 61 2 3
10、 4 5 6,Y =1 1 1 1 1 12 2 2 2 2 23 3 3 3 3 34 4 4 4 4 45 5 5 5 5 56 6 6 6 6 67 7 7 7 7 78 8 8 8 8 8,X,Y=meshgrid(1:6,1:8) %直接创建两个矩阵X和Y,例1.20 绘二元函数 z = x exp( x2 y2)的图形。x,y=meshgrid(-2:0.2:2);z=x.*exp(-x.2-y.2); mesh(x,y,z)colormap(0 0 1),绘网面命令mesh()使用格式: mesh(x,y,z) 或 mesh(z),注记: x,y是维数相同的矩阵;表达式中“.*”
11、和“.”运算使得z是与x,y维数相同矩阵。,功能相同的绘图命令:surf, meshc, meshz,例1.16 绘制一元函数y= sin x / x 在-8,8上图形。,例1.21 绘二元函数 图形,x,y=meshgrid(-8:0.5:8); r=sqrt(x.2+y.2)+eps; z=sin(r)./r; mesh(x,y,z) colormap(1,0,0),x=-8:8;y=sin(x)./x; Warning: Divide by zero. plot(x,y),除零错误导致残缺图形,分母加eps方法避免出错,X,Y=meshgrid(-2:0.2:2); Z=X.*exp(-
12、X.2-Y.2); figure(1),contour(Z) %创建1号图形窗口 figure(2), contourf(Z,20) %创建2号图形窗口,例1.22 用contour() 命令绘二元函数z = x exp( x2 y2) 等高线,圆域上的复变函数图形,以复变函数 的实部为二元函数绘图,例1.28 复变量 满足,r=linspace(0,1,20);r=r; theta=linspace(-2*pi,2*pi,50); z=r*exp(i*theta); u=r.(1/2)*exp(i*theta/2); x=real(z);y=imag(z); s=real(u); mesh(
13、x,y,s) colormap(0 0 1) axis off view(-74,0),计算机浮点数表示法,6.378137 103 6.378137 e +003 2.99792458 105 2.99792458e +005,例1.24近似计算地球表面积,并以不同格式输出数据R=6378.137; S=4*pi*R2format long,Sformat bank,S,数据显示格式,MATLAB内部常数,数据显示格式,字符串变量:将字符串用单引号括起来赋值给变量,拼接字符串命令: strcat(T1,T2,T3) 将整数转换成字符命令: int2str( ),例1.26 三个名人Euler
14、,Elizabeth,Plato职业分别是mathematician,movie star,philosopher,编写程序正确联接他们的名字和职业并输出,n1=Euler;n2=Elizabeth;n3=Plato; p1=mathematician;p2=movie star; p3=philosopher; s1=strcat(n1,-,p1), s2=strcat(n2,-,p2), s3=strcat(n3,-,p3),例1.27 生肖问题08年是鼠年还是狗年?,n=input(input n:=); S=鼠牛虎兔龙蛇马羊猴鸡狗猪; k=rem(n-4,12)+1; s=S(k);
15、s=strcat(int2str(n), 年是, s,年),input n:=2006s= 2006年是狗年 Input n:=2008s=2008年是鼠年,复变函数图形,设有复平面上单位圆域内变化的变量 以 u = z 的实部函数绘图并输出图形文件,r=linspace(0,1,20); theta=linspace(-pi,pi,25); z=r*exp(i*theta); x=real(z); y=imag(z); mesh(x,y,x),hold on colormap(0 0 1) mesh(x,y,-ones(size(x) axis off,输出图形文件,1.在图形窗口用鼠标点击
16、窗口左上方的菜单栏“file”,选择下拉菜单中的“Export”. (在高版本中选择“Save As”),2.在对话框中选择文件类型“bmp”格式,将图形文件命名为riman.,练习与思考题 I,1.三阶幻方矩阵又被称为九宫图,如果允许将矩阵对称变换、旋转变换。问有多少种不同的三阶幻方。 2.使用pascal(5)创建5阶矩阵,分析数字排列规律,与杨辉三角形比较。 3.分析一元函数 f(x) = x sin (1/x) 的极值点,并在函数图形上标出极值点序列。 4. 小结绘图方法:ezplot()、fplot()、plot()、polar()、comet(),练习与思考题 II,1.用特殊矩阵函数V=vander(1;2;3)可创建一个3阶矩阵,如何用V的主对角元构造一个对角矩阵D;,2.命令x,y=meshgrid(1:3);H=1./(x+y-1)执行结果是三阶矩阵,写出x和y的数据以及H的数据。 3.绘二元函数 z = x exp( x2 y2)图形时,使用两个命令mesh(x,y,z)与mesh(z) 所创建的图形有何区别 4. 2007年农历是丁亥年,排列天干(甲乙丙丁戊己庚辛壬癸)/地支(子丑寅卯辰巳午未申酉戍亥),用字符串数组编写程序,要求输入年份,输出农历纪年,