宠宠宠宠宠宠粉时刻 文末领取福利!
数学运算与函数
① 基本代数运算操作
+,-,*,\,/,^,
② 矩阵运算函数:
求行列式(det),矩阵求逆(inv),求秩(rank),求迹(trace), 求模(norm),d=eig(A)求矩阵A 的特征值,[v,d]=eig(A)求矩阵A 的特征向量和特征值,这里 v 的列向量是对应的特征向量。
矩阵基本运算:
A\B, B/A, A.*B, A./B, A.\B, A.^B。
③ 基本数学函数
常用的数学函数有sin,cos,tan,abs,min,sqrt,log,log10,sign,asin,acos,atan,max,sum,exp,fix 等。具体使用方法可参看帮助 help。
常用的矩阵函数有 expm,logm,sqrtm 和 funm,funm 函数可计算任何一个基本数
学函数的矩阵函数。它可以表示为
fa=funm(a,'fun')
式中,fun 可以是任意一个基本函数,如 sin,cos,log10 等。
④ 多项式
任意多项式都可以用一个行向量来表示,即 n 维的向量 a 表示多项式
反过来,任意一个向量就可以作为多项式。
例如:
p=[1 –6 11 -6]; poly2sym(p,’x’)
ans =
x^3-6*x^2+11*x-6
求s3 + 2s2 + 3s + 4 的根可用如下命令。
A=[1 2 3 4]; roots(A)
i) poly 函数
p=poly(A),A 是一个n× n 的矩阵时,此函数返回矩阵 A 的特征多项式 p,p 是n +1 维向量;A是向量时,此函数返回以向量中的元素为根的多项式。
ii) 多项式的数组运算
y=polyval(p,x) 计算多项式在 x 处的值,x 可以是矩阵或向量,此时函数计算多项式在 x 的每个元素处的值。
iii) 多项式的矩阵运算
y=polyvalm(p,x) 相当于用矩阵 x 代替多项式的变量来对矩阵而不是对数组进行运算,x 必须是方阵。例如:
可采用如下的命令进行计算
p=[1 3 2];
a=[1 2; 3 4];
polyvalm(p,a)
iv) 多项式的乘法和除法运算
w=conv(u,v) 此函数求多项式 u 和 v 的乘积,即求向量 u 和 v 的卷积。如果m=length(u),n=length(v),则 w 的长度为 m+n-1。
[q,r]=deconv(u,v) 此函数表示多项式 u 除以多项式 v 得到商多项式 q 和余数多项式 r,如果 r 的元素全部为零,则表示多项式 v 可以整除多项式 u。
绘图命令
① 二维图形
二维绘图的基本命令有 plot,loglog,semilogx,semilogy 和 polar。它们的使用方法基本相同,其不同特点是在不同的坐标中绘制图形。plot 命令使用线性坐标空间绘制图形;loglog 命令在两个对数坐标空间中绘制图形;而 semilogx(或 semilogy) 命令使用x 轴(或y 轴)为对数刻度,另外一个轴为线性刻度的坐标空间绘制图形;polar使用极坐标空间绘制图形。
二维绘图命令 plot 为了适应各种绘图需要,提供了用于控制线色、数据点和线型的 3 组基本参数。它的使用格式如下:
plot(x,y,’color_point_linestyle’)
◾该命令是绘制 y 对应 x 的轨迹的命令。
◾y 与 x 均为向量,且具有相同的元素个数。
◾用字符串‘color_point_linestyle’完成对上面 3 个参数的设置。
▪ 线色(r-red,g-green, b-blue,w-white,k-black,i-invisible,y-yellow),
▪ 数据点(.,o,x,+,*,S, H,D,V,^,>,
▪ 线型(-,-.,--,:)都可以根据需要适当选择。
当 plot(x,y)中的 x 和 y 均为m× n 矩阵时,plot 命令将绘得n 条曲线。plot(t,[x1,x2,x3])在同一坐标轴内同时绘制三条曲线。如果多重曲线对应不同的向量绘制,可使用命令
plot(t1,x1,t2,x2,t3,x3)
式中 x1 对应 t1,x2 对应 t2 等等。在这种情况下,t1,t2 和 t3 可以具有不同的元素个数,但要求 x1,,x2 和 x3 必须分别与 t1,t2 和 t3 具有相同的元素数量。
subplot 命令使得在一个屏幕上可以分开显示 n 个不同坐标系,且可分别在每一个坐标系中绘制曲线。其命令格式如下:
subplot(r,c,p)
该命令将屏幕分成 r*c,而 p 表示在第几个窗口。窗口的排号是从左到右,自上而下。 在图形绘制完毕后,执行如下命令可以再在图中加入题目、标号、说明和分格线等。这些命令有 title,xlabel,ylabel,text,gtext 等。它们的命令格式如下:
title(‘My Title’),
xlabel(‘My X-axis Label’),
ylabel(‘My Y-axis Label’),
text(x,y,'Text for annotation'),
gtext('Text for annotation'),
grid
gtext命令是使用鼠标器定位的文字注释命令。当输入命令后,可以在屏幕上得到 一个光标,然后使用鼠标器控制它的位置。按鼠标器的左键,即可确定文字设定的位置。
hold on 是图形保持命令,可以把当前图形保持在屏幕上不变,同时在这个坐标系内绘制另外一个图形。hold 命令是一个交替转换命令,即执行一次,转变一个状态(相当于hold on、hold off)。
Matlab可以自动选择坐标轴的定标尺度,也可以使用axis命令定义坐标轴的特殊 定标尺度。其命令格式如下:
axis([x-min,x-max,y-min,y-max])
axis 命令的另一个作用是控制纵横尺度的比例。例如,输入 axis(‘square’)后,可得到一个显示方框,此时再在该框内绘制一个圆形时(如:plot(sin(x),cos(x)),在屏幕上可以看到一个圆(一般情况下,由于屏幕的不规则原因,只能看到一个椭圆)。再次输入 axis(‘normal’)命令,屏幕返回到一般状态。
例
x=0:0.25:5;
y1=x.^0.1;
y2=x.^0.5;
y3=x.^0.8;
y4=x.^1.5;
t=0:0.001:2*pi;
hold on
plot(3*cos(t),3*sin(t))
plot(x,y1,'bo',x,y2,'rH-')
plot(x,y3,'gp--')
plot(x,y4,'mx-.')
title('My Title'),
xlabel('My X-axis Label'),
ylabel('My Y-axisLabel')
text(2,8,'Text for annotation')
gtext('Text for annotation'),grid
结果如图所示:
例
用极坐标绘图命令绘制方程r = cos 2θ (四叶玫瑰线)的图形。
x=0:0.1:2*pi;
r=cos(2*x);
polar(x,r)
例
随机地产生 20 个数据,再根据这些数据画统计直方图。
x=rand(1,20);
y=round(20*x);
subplot(1,2,1)
hist(x)
subplot(1,2,2)
hist(y)
② 三维图形
在实际工程计算中,最常用的三维绘图是三维曲线图、三维网格图和三维曲面图 3 种基本类型。与此对应,Matlab 也提供了 3 个三维基本绘图命令(三维曲线命令 plot3、三维网格命令 mesh 和三维表面命令 surf)。下面先初步介绍其中的两个。
i)三维曲线
plot3(x,y,z)通过描点连线画出曲线,这里 x,y,z 都是 n 维向量,分别表示该曲线上点集的横坐标、纵坐标、竖坐标。
例
在区间[0,10*pi]画出参数曲线x = sin(t) ,y = cos(t),z = t ,并分别标注。
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t')
ii)网格命令 mesh(x,y,z)画网格曲面。
这里 x,y,z 是三个同维数的数据矩阵,分别表示数据点的横坐标、纵坐标、竖坐标,命令mesh(x,y,z)将该数据点在空间中描出,并连成网格。
例
绘制二元函数
的三维网格图。
解 x=-3:0.1:3;y=-5:0.1:5;
x1=ones(size(y'))*x;y1=y'*ones(size(x));
[x2,y2]=meshgrid(x,y);
z1=(sin(x1.*y1)+eps)./(x1.*y1+eps);
z2=(sin(x2.*y2)+eps)./(x2.*y2+eps);
subplot(1,2,1),mesh(x1,y1,z1)
subplot(1,2,2),mesh(x2,y2,z2)
③ 符号函数的简易绘图函数ezplot
ezplot(f)绘制f(x)的函数图,这里f 为代表数学表达式的包含单个符号变量x 的字符串或符号表达式。x 轴的近似范围为[-2*pi,2*pi]。
ezplot(f,xmin,xmax)或 ezplot(f,[min,max])使用输入参数来代替默认横坐标范围[- 2*pi,2*pi]。
例
画出函数y = tan x的图形
解:ezplot(‘tan(x)’)
④ 绘制函数图函数fplot
fplot(fun,lims)绘制由字符串fun 指定函数名的函数在x 轴区间为lims=[xmin, xmax] 的函数图。若lims=[xmin,xmax,ymin,ymax],则y 轴也被输入限制。fun 必须为M 文件 的函数名或对变量x 的可执行字符串,此字符串被送入函数eval 后被执行。函数fun(x)必须要返回针对向量x 的每一元素结果的行向量。
解:
(1)首先用M 文件fun1.m 定义函数 f (x) 如下:
function y=fun1(x);
if x<1
y=x+1;
else y=1+1./x;
end
(2)在matlab 命令窗口输入
fplot(‘fun1’,[-3,3])
就可画出函数 f (x) 的图形。
⑤ 画等高线的函数contour
在Matlab 中,可以用contour 命令绘制平面等高线,用contour3 命令绘制空间等高线。
绘制平面等高线contour 命令的具体使用格式为:contour(x,y,z,n)
contour(x,y,z,v)
contourf(…)
其中x,y 为其横纵坐标值向量,如果x 为s 维,y 为m 维,则z 为m×s 维矩阵,为对应于坐标(x,y)的高度。参数 n 为整数,指定了绘出等高线的条数。参数 v 为向量, 指定了在哪些高度绘出等高线,如只想在一个高度z 绘出等高线,则v=[z,z]。
contourf(…)命令的参数与contour 命令完全相同,只是其绘出的等高线图将被自动填上颜色。
上面2 个命令用来计算所画等高线的x,y 坐标值。
clabel(c)
clabel(c,v)
上面2 个命令用来标注计算的c 阵处的高度值。clabel(c)将把所绘等高线全部自动标注,clabel(c,v)将自动标注由向量v 确定的若干条等高线的高度值。
例
clc;clf;
x=0:400:5600; y=0:400:4800;
z=[370,470,550,600,670,690,670,620,580,450,400,300,100,150,250; 510,620,730,800,850,870,850,780,720,650,500,200,300,350,320; 650,760,880,970,1020,1050,1020,830,800,700,300,500,550,480,350; 740,880,1080,1130,1250,1280,1230,1040,900,500,700,780,750,650,550; 830,980,1180,1320,1450,1420,1400,1300,700,900,850,810,380,780,750; 880,1060,1230,1390,1500,1500,1400,900,1100,1060,950,870,900,930,950; 910,1090,1270,1500,1200,1100,1350,1450,1200,1150,1010,880,1000,1050,1100; 950,1190,1370,1500,1200,1100,1550,1600,1550,1380,1070,900,1050,1150,1200; 1430,1450,1460,1500,1550,1600,1550,1600,1600,1600,1550,1500,1500,1550,1550; 1420,1430,1450,1480,1500,1550,1510,1430,1300,1200,980,850,750,550,500; 1380,1410,1430,1450,1470,1320,1280,1200,1080,940,780,620,460,370,350; 1370,1390,1410,1430,1440,1140,1110,1050,950,820,690,540,380,300,210; 1350,1370,1390,1400,1410,960,940,880,800,690,570,430,290,210,150];
figure,hold on
c=contourf(x,y,z,10);clabel(c)
text(0,800,'▼\leftarrow 起点','fontsize',15,'color','r') text(4000,2000,'▼\leftarrow 居民点','fontsize',15,'color','r')
- End -
文末福利!
本推文发送24小时后(即截止7月29号17:00点),留言区排名第1、第3、第5、第7、第9的五位同学将免费获取2019年“高教社杯”国赛赛题、2019年“高教社杯”优秀论文以及2020年最新“数维杯”国赛优秀论文全套资料~
扫码关注我们
2020夏令营QQ交流群