MATLAB基本运算和仿真一、矢量的点乘dot和叉乘cross运算用法:点乘——dot(a,b);叉乘——cross(a,b),其中a和b是矢量(向量)。例1.1已知和,求(1);(2);(3)A和B之间的夹角。zyxaaaA53zyxaaaB642BABA解代码如下A=[1,3,5];%矢量AB=[2,4,6];%矢量Bc=dot(A,B)%矢量A和B的点积D=cross(A,B)%矢量A和B的叉积a=sqrt(dot(A,A));%矢量A的模值b=sqrt(dot(B,B));%矢量B的模值theta=acosd(c/(a*b))%矢量A、B间的夹角运行结果为c=44D=-24-2theta=6.3532二、标量场的等值线contour命令和矢量场的矢量线quiver命令1.对标量函数z=z(x,y),contour命令的用法——contour(X,Y,Z,n,v)必须输入的矩阵:X、Y——x、y的取值范围矩阵,Z——对应于X和Y的数值矩阵。选填参量:n——绘制等值线的条数,v——向量,该向量中元素的个数是n,元素的数值是等值线的值。例1.2在,的范围内画出标量场的9条等值线。2x2y22eyxxz解代码如下[X,Y]=meshgrid(-2:0.2:2,-2:0.2:2);%x,y[-2,2],间隔为0.2Z=X.*exp(-X.^2-Y.^2);%点(x,y)处的函数值zv=[-0.4,-0.3,-0.2,-0.1,0,.1,0.2,.3,0.4];%设置向量,有9个等值线的值[C,h]=contour(X,Y,Z,v);%C是等高线矩阵,h是等高线句柄clabel(C,h)%标出等值线数值2.对二维矢量函数,quiver命令的用法(1)单个矢量:quiver(x,y,u,v)表示在点(x,y)用箭头图形绘制矢量图,u是x方向分量,v是y方向分量。(2)多点绘图:quiver(X,Y,U,V,scale)其中X、Y——x、y的取值范围矩阵,U——对应(x,y)点上x方向的分量,V——对应(x,y)点上y方向的分量,scale——用来控制矢量线长度的实数,不填写时默认为1,有时为避免重叠,可设置较小的值。3.对三维矢量函数,用quiver3命令quiver3(X,Y,Z,U,V,W)三、梯度gradient、散度divergence和旋度curl运算1.对二元函数F=f(x,y),它的梯度gradient调用格式为[Fx,Fy]=gradient(F)其中F是二维矩阵,Fx是F在x方向的偏导数,Fy是F在y方向的偏导数,并假定自变量的间距是1。对三元函数F=f(x,y,z),它的梯度gradient调用格式为[Fx,Fy,Fz]=gradient(F)其中F是三维矩阵,Fx是F在x方向的偏导数,Fy是F在y方向的偏导数,Fz是F在z方向的偏导数,并假定自变量的间距是1。例1.3绘出例1.2中标量场的梯度的矢量图。解代码如下[X,Y]=meshgrid(-2:0.2:2,-2:0.2:2);%x,y[-2,2],间隔为0.2Z=X.*exp(-X.^2-Y.^2);%计算点(x,y)处的函数值z[DX,DY]=gradient(Z,.2,.2);%计算梯度contour(X,Y,Z)%绘制等值线holdon%图形保持quiver(X,Y,DX,DY)%绘制矢量图2.对一个矢量场,计算它的散度用divergence命令,格式为div=divergence(X,Y,Z,U,V,W)例1.4画出矢量场,及其散度的等值线。aA2eA解利用坐标变换公式矢量场A在直角坐标中的表达式为2222sincosyxyyxxyxyxaaaaa222yx)y(x-22)y(x-222222eeyxyyxxyxaaA)y(x-22)y(x-222222eeyxyyxxyxaaA代码如下:%矢量场A的矢量图及其散度的等值线x=linspace(-2,2,21);y=linspace(-2,2,21);%产生等间隔的21个点[X,Y]=meshgrid(x,y);%点(x,y)坐标Ax=exp(-X.^2-Y.^2).*X./sqrt(X.^2+Y.^2+eps);%矢量场A的x分量Ay=exp(-X.^2-Y.^2).*Y./sqrt(X.^2+Y.^2+eps);%矢量场A的y分量div=divergence(X,Y,Ax,Ay);%计算A的散度quiver(X,Y,Ax,Ay,.8)%画A的矢量图Xlim([-22]);%将显示范围限制在网格内Ylim([-22]);holdon%图形保持contour(X,Y,div)%画A的等值线3.对一个矢量场,计算它的旋度用curl命令,格式为[curlx,curly,curlz,cav]=curl(X,Y,Z,U,V,W)例1.4画出矢量场,及其旋度×A的矢量线。aA2e解利用坐标变换公式矢量场A在直角坐标中的表达式为222yx2222cossinyxxyxyyxyxaaaaa)y(x-22)y(x-222222eeyxxyxyyxaaA)y(x-22)y(x-2222222eeeyxxyxyyxaaaA代码如下:%矢量场A的矢量图theta=0:pi/5:2*pi;rho=0.4:0.4:2;%φ角和半径ρ的范围和间隔[t,r]=meshgrid(theta,rho);%在圆柱坐标下建立网格U=-exp(-r.^2).*sin(t);%矢量场A的x分量V=exp(-r.^2).*cos(t);%矢量场A的y分量[x,y]=pol2cart(t,r);%将网格转化为直角坐标quiver(x,y,U,V,.2)%画场矢量A的二维矢量图Xlim([-22]);%将显示范围限制在网格内Ylim([-22]);%矢量场A的旋度的矢量图[x,y,z]=meshgrid(-2:2);%建立[-2,2]区间间隔为1的网格A=exp(-x.^2-y.^2);%计算函数U=-A.*y./sqrt((x+eps).^2+(y+eps).^2);%矢量场A的x分量V=A.*x./sqrt((x+eps).^2+(y+eps).^2);%矢量场A的y分量W=A.*0;%矢量场A的z分量[curlx,curly,curlz]=curl(x,y,z,U,V,W);%计算矢量场A的旋度quiver3(x,y,z,curlx,curly,curlz)%画旋度的三维矢量图Xlim([-22]);%将显示范围限制在网格内Ylim([-22]);Zlim([-2,2]);注意:代码中的eps时间算计中的最小数,为10-52,是为了避免出现分母为零的情况而加的。zyxaaaA32352zyxaaaB624zyxaaaC432zyxaaaAzyxaaaB46zyxaaaCBAxyf2练习题为邻边构成的平行六面体的体积。试求①A、B之间的夹角;②在C上的分量;并用matlab验证。利用matlab(1)在xy平面上画出f的等值线族;(2)画出f的矢量图。1.利用matlab求以矢量2.已知矢量3.已知二维标量场