数学实验与Matlab
★ 画矩阵结构图的gplot指令。 ◆(3)
6
【 clf, A=[0 1 1 0;0 0 1 1;0 0 0 1;1 0 0 0]; xy=[0 1;0 0;-1 –0.5;1 –0.5];
graphy_plot(A,xy,1,0.5), % gplot(A,xy) 】
1.3.4 参考程序
graphy_plot.m
【 function y=graphy_plot(A,xy,l,p)
%画矩阵的有向结构图。 A为邻接矩阵,xy为顶点坐标,l控制参数,l=0,画无向图;
%l~=0,画有向图。p为控制箭头大小的参数。
a=-max(abs(xy(:,1)))*1.1;b=max(abs(xy(:,1)))*1.1; c=-max(abs(xy(:,2)))*1.1;d=max(abs(xy(:,2)))*1.1; if l=0
gplot(A,xy),axis([a b c d]),hold on, elseif l~=0
U=[];V=[];X=[];Y=[]; n=length(A(:,1)) ; for i=1:n
k=find(A(i,:)~=0); m=length(k); if(m~=0) for j=1:m
u(1)=(xy(k(j),1)-xy(i,1)); v(1)=(xy(k(j),2)-xy(i,2)); u(2)=eps; v(2)=eps; U=[u;U];V=[v;V]; X=[[xy(i,1) xy(k(j),1)];X]; Y=[[xy(i,2) xy(k(j),2)];Y]; end
text(xy(i,1),xy(i,2),['\\bullet\\leftarrow\\fontsize{16}\\it{V}',? um2str(i)]); hold on, end end
gplot(A,xy),axis([a b c d]),hold on,
h=quiver(X,Y,U,V,p);set(h,'color','red');hold on,
6
数学实验与Matlab
plot(xy(:,1),xy(:,2),'k.','markersize',12),hold on, end , hold off 】
7
实验2.函数的可视化与Matlab作
2.1 实验与观察:函数的可视化
2.1.1 Matlab二维绘图命令
1.周期函数与线性p-周期函数
◆ 观察 :
【 clf, x=linspace(0,8*pi,100);
F=inline('sin(x+cos(x+sin(x)))');
y1=sin(x+cos(x+sin(x))); y2=0.2*x+sin(x+cos(x+sin(x))); plot(x,y1,'k:',x,y2,'k-')
legend('sin(x+cos(x+sin(x))','0.2x+sin(x+cos(x+sin(x)))',2) 】
2. plot指令:绘制直角坐标的二维曲线 3. 图形的属性设置和屏幕控制
【 h=plot([0:0.1:2*pi],sin([0:0.1:2*pi])); grid on
set(h,'LineWidth',5,'color','red');
set(gca,'GridLineStyle','-','fontsize',16) 】
◆设置y坐标的刻度并加以说明,并改变字体的大小。 【 h=plot([0:0.1:2*pi],sin([0:0.1:2*pi]));grid on,
set(gca,'ytick',[-1 -0.5 0 0.5 1]), set(gca,'yticklabel','a|b|c|d|e'), set(gca,'fontsize',20) 】
4. 文字标注指令
【 plot(x,y1,'b',x,y2,'k-') ,
7
数学实验与Matlab
8
set(gca,'fontsize',15,'fontname','times New Roman'), %设置轴对象的字体为times
% New Roman,字体的大小为15
title(' \\it{Peroid and linear peroid function}'); %加标题,注意文字用单引号
' ' 加上
%斜杠'\\'后可输入不同的设置,例如it{…}表示花括号里的文字为斜体;如果有多项设置,
%则可用\\…\\…\\…连续输入。
xlabel('x from 0 to 8*pi it{t}\\'); ylabel('\\it{y}'); %说明坐标轴
text(x(49),y1(50)-0.4,'\\fontsize{15}\\bullet\\leftarrowThe period function {\\itf(x)}');
%在坐标(x(49),y1(50)-0.4)处作文字说明, 各项设置用\隔开。
%\\fontsize{15}\\bullet\\leftarrow的意义依次是:\\字体大小=15 \\ 画圆点 \\左箭头
text(x(14),y2(50)+1,'\\fontsize{15}The {\\itg(x)}\\rightarrow
linear period function
\\bullet') %与上一语句类似,用右箭头 】 ◆观察指令legend和num2str的用
6 Peroid and linear peroid function法:在同一张图上画出y?sin(t)和y?3e?0.5t, 这里t?[0,3?], 并进行适当的标注。
y543The linear period function g(x)?· zxy2_2.m 【
clf,
210-10510·? The period function f(x)t=0:0.1:3*pi;alpha=0:0.1:3*pi;
plot(t,sin(t),'r-');hold on; plot(alpha,3*exp(-0.5*alpha),'k:');
set(gca,'fontsize',15,'fontname','times New Roman'),
15x202530 图2.5 文字标注
xlabel('\\it{t(deg)}');ylabel('\\it{magnitude}');
title(' \\it{sine wave and {\\it{Ae}}^{-\\alpha{\\itt}}wave}'); %注意\\alpha的
意义
text(6,sin(6),'\\fontsize{15}The Value \\it{sin(t)} at {\\itt}=6\\rightarrow\\bullet', 'HorizontalAlignment','right'),
8
数学实验与Matlab
%上面的语句是一整行,如果要写成两行,必须使用续行号 ? ,例如要在
“ bullet',”
%后换行,需写“bullet', ?”后才能换行。
% 'HorizontalAlignment','right' 表示箭头所指的曲线对象在 文字的右边。
9
text(2,3*exp(-0.5*2),['\\fontsize{15}\\bullet\\leftarrow The Value of \\it{3e}^{-0.5 \\it{t}}=',num2str(3*exp(-0.5*2)),' at \\it{t} =2 ']);
%num2str的用法:['string1' ,num2str,'string2'],注意方括号的使用。 %legend('\\itsin(t)','{\\itAe}^{-\\alphat}') % 请结合图形观察此命令的使
用 】
运行结果如图2.6所示。
5. 图形窗口的创建和分割
◆观察:
【 clf,b=2*pi;x=linspace(0,b,50);
for k =1:9
y=sin(k*x);
subplot(3,3,k),plot(x,y),axis([0,2*pi,-1,1]) end 】
2.1.2多元函数的可视化与空间解析几何(三维图形)
本节通过高等数学的几个例子观察Matlab的三维绘图功能和技巧。
1. 绘制二元函数
◆观察:绘制 z?f(x,y)?(1?x)?12ln(x?y)的图象,作定义域的裁剪。
◆(1)观察meshgrid指令的效果。 【 a=-0.98;b=0.98;c=-1;d=1;n=10;
x=linspace(a,b,n); y=linspace(c,d,n); [X,Y]=meshgrid(x,y); plot(X,Y,'+') 】
9
数学实验与Matlab
★三维绘图指令mesh、meshc、surf。
◆(2)做函数的定义域裁剪,观察上述三维绘图指令的效果。
程序zxy2_4.m
10
【 clear,clf,
a=-1;b=1;c=-15;d=15;n=20;eps1=0.01; x=linspace(a,b,n);y=linspace(c,d,n); [X,Y]=meshgrid(x,y);
for i=1:n %计算函数值z ,并作
定义域裁剪
for j=1:n
if (1-X(i,j)) z(i,j)=NaN; %作定义域 裁剪,定义域以外的函数值为NaN else z(i,j)=1000*sqrt(1-X(i,j))^-1.*log(X(i,j)-Y(i,j)); end end end zz=-20*ones(1,n);plot3(x,x,zz),grid off,hold on %画定义域 的边界线 mesh(X,Y,z) %绘图,读者可用meshz, surf, xlabel('x'),ylabel('y'),zlabel('z'), box on %把三维图形封闭在箱体 里 】 meshc在此替换之 ◆运行了zxy2_4.m 以后,有关向量存储在工作空间中,在此基础上,观察上述等值线绘制指令的运行效果。 【 [cs,h]=contour(X,Y,z,15); clabel(cs,h,'labelspacing',244) 】 2. 三元函数可视化: slice指令 ◆ 观察: 绘制三元函数w?x2?y2?z2的可视化图形。 10