#

matlab矢量绘图


matlab矢量图

流线图streamline

streamline(x,y,u,v,startx,starty)其中startx,starty分别为流线的坐标

[x,y]=meshgrid(0:0.1:1,0:0.1:1);
u=sin(x);v=-y;
figure
quiver(x,y,u,v,1);
startx=0.1:0.1:1;
starty=ones(size(startx));
streamline(x,y,u,v,startx,starty)

矢量函数的可视化

%% 二维
[x,y]=meshgrid(0:.2:2);
u=cos(x).*y;    v=sin(x).*y;
quiver(x,y,u,v)

%% 三维
[x,y]=meshgrid(0:.2:2);
u=cos(x).*y;    v=sin(x).*y;
quiver(x,y,u,v)

梯度gradient

对于直角坐标系

=xex+yey+zez\nabla =\frac{\partial}{\partial x}\boldsymbol{e}_x+\frac{\partial}{\partial y}\boldsymbol{e}_y+\frac{\partial}{\partial z}\boldsymbol{e}_z

对于柱坐标系

=ρeρ+1ρφeφ+zez\nabla =\frac{\partial}{\partial \rho}\boldsymbol{e}_{\rho}+\frac{1}{\rho}\frac{\partial}{\partial \varphi}\boldsymbol{e}_{\varphi}+\frac{\partial}{\partial z}\boldsymbol{e}_z

对于球坐标系

=rer+1rθeθ+1rsinθφeφ\nabla =\frac{\partial}{\partial r}\boldsymbol{e}_r+\frac{1}{r}\frac{\partial}{\partial \theta}\boldsymbol{e}_{\theta}+\frac{1}{r\sin \theta}\frac{\partial}{\partial \varphi}\boldsymbol{e}_{\varphi}

matlab中用法,[Fx,Fy,Fz...Fn]=gradient(F,hx,hy,hz...hn)

下面给个例子:

[x,y]=meshgrid(-2:.1:2);
z=x.*exp(-x.^2-y.^2);
[px,py]=gradient(z,.2,.2);
figure
contour(x,y,z);
hold on
quiver(x,y,px,py);
hold off

[x,y]=meshgrid(-2:.1:2);
z=x.*exp(-x.^2-y.^2);
[px,py]=gradient(z,.2,.2);
figure
contour(x,y,z);
hold on
quiver(x,y,px,py);
hold off

散度divergence

散度是单位体积的通量(即通量体密度)
其定义为:

divF=F=limΔV0FdSΔVdiv\boldsymbol{F}=\nabla \cdot \boldsymbol{F}=\underset{\varDelta V\rightarrow 0}{\lim}\frac{\iint{\boldsymbol{F}\cdot d\boldsymbol{S}}}{\varDelta V}

直角坐标:

F=Fxx+Fyy+Fzz\nabla \cdot \boldsymbol{F}=\frac{\partial F_x}{\partial x}+\frac{\partial F_y}{\partial y}+\frac{\partial F_z}{\partial z}

柱坐标:

F=1ρ(ρ(ρFρ)+Fφφ+ρFzz)\nabla \cdot \boldsymbol{F}=\frac{1}{\rho}\left( \frac{\partial}{\partial \rho}\left( \rho F_{\rho} \right) +\frac{\partial F_{\varphi}}{\partial \varphi}+\rho \frac{\partial F_z}{\partial z} \right)

球坐标:

F=1r2sinθ[sinθr(r2Fr)+rθ(sinθFθ)+rFφφ]\nabla \cdot \boldsymbol{F}=\frac{1}{r^2\sin \theta}\left[ \sin \theta \frac{\partial}{\partial r}\left( r^2F_r \right) +r\frac{\partial}{\partial \theta}\left( \sin \theta F_{\theta} \right) +r\frac{\partial F_{\varphi}}{\partial \varphi} \right]

高斯公式:

VFdV=FdS\int_V{\nabla \cdot \boldsymbol{F}dV}=\iint{\boldsymbol{F}\cdot d\boldsymbol{S}}

散度的体积分等于通量
matlab中内置divergence

  • div=divergence(x,y,z,u,v,w)
syms x y z real
F=[cos(x+2*y),sin(x-2*y)];
g=divergence(F,[x y]);
divF=matlabFunction(g);
x=-2.5:0.1:2.5;
[X,Y]=meshgrid(x);
Fx=cos(X+2*Y);
Fy=sin(X-2*Y);
div_num=divF(X,Y);
pcolor(X,Y,div_num);
shading interp;
colorbar
hold on
quiver(X,Y,Fx,Fy,'k','linewidth',1);

旋度curl

矢量场旋度用来描述围绕中心旋转的程度,定义为:

rotF=×F=limΔS0FdlΔSmaxnrot\boldsymbol{F}=\nabla \times \boldsymbol{F}=\underset{\varDelta S\rightarrow 0}{\lim}\frac{\oint{\boldsymbol{F}\cdot d\boldsymbol{l}}}{\varDelta S}|_{\max}\cdot \vec{n}

对于直角坐标系:

×F=exeyezxyzFxFyFz\nabla \times \boldsymbol{F}=\left| \begin{matrix} \boldsymbol{e}_x& \boldsymbol{e}_y& \boldsymbol{e}_z\\ \frac{\partial}{\partial x}& \frac{\partial}{\partial y}& \frac{\partial}{\partial z}\\ F_x& F_y& F_z\\ \end{matrix} \right|

对于柱坐标:

×F=eρρeφezρρφzFρρFφFz\nabla \times \boldsymbol{F}=\left| \begin{matrix} \frac{\boldsymbol{e}_{\rho}}{\rho}& \boldsymbol{e}_{\varphi}& \frac{\boldsymbol{e}_z}{\rho}\\ \frac{\partial}{\partial \rho}& \frac{\partial}{\partial \varphi}& \frac{\partial}{\partial z}\\ F_{\rho}& \rho F_{\varphi}& F_z\\ \end{matrix} \right|

对于球坐标:

×F=err2sinθeθrsinθeφrrθφFrrFθrsinθFφ\nabla \times \boldsymbol{F}=\left| \begin{matrix} \frac{\boldsymbol{e}_r}{r^2\sin \theta}& \frac{\boldsymbol{e}_{\theta}}{r\sin \theta}& \frac{\boldsymbol{e}_{\varphi}}{r}\\ \frac{\partial}{\partial r}& \frac{\partial}{\partial \theta}& \frac{\partial}{\partial \varphi}\\ F_r& rF_{\theta}& r\sin \theta F_{\varphi}\\ \end{matrix} \right|

matlab中用curl函数

syms x y z real
F=[cos(x+2*y),sin(x-2*y)];
G=curl([F,0],[x y z])
curlF=matlabFunction(G(3));
x=-2.5:0.1:2.5;
[X,Y]=meshgrid(x);
Fx=cos(X+2*Y);
Fy=sin(X-2*Y);
rot=curlF(X,Y);
pcolor(X,Y,rot);
shading interp;
colorbar
hold on
quiver(X,Y,Fx,Fy,'k','linewidth',1);

拉普拉斯算子

定义:

Δ==2=2x2+2y2+2z2\Delta =\nabla \cdot \nabla =\nabla ^2=\frac{\partial ^2}{\partial x^2}+\frac{\partial ^2}{\partial y^2}+\frac{\partial ^2}{\partial z^2}

矢量函数拉普拉斯变换:

ΔF=(F)×(×F)\Delta \boldsymbol{F}=\nabla \left( \nabla \cdot \boldsymbol{F} \right) -\nabla \times \left( \nabla \times \boldsymbol{F} \right)

  • 通过上式可以求出解析解:
syms x y z
V=[x^2*y,y^2*z,z^2*x];
vars=[x y z];
gradient(divergence(V,vars))-curl(curl(V,vars),vars)
  • 数值差分法
    del2(U,hx,hy,hz...hn)

Li,j=14(Ui,j+1+Ui+1,j+Ui1,j+Ui,j1)Ui,jL_{i,j}=\frac{1}{4}\left( U_{i,j+1}+U_{i+1,j}+U_{i-1,j}+U_{i,j-1} \right) -U_{i,j}

del2求出的是拉普拉斯运算的1/4

[x,y]=meshgrid(-5:0.25:5);
U=1/3.*(x.^4+y.^4);
h=0.25;%指定步长
L=4*del2(U,h);
figure
surf(x,y,L);
grid on
title('$\Delta U(x,y)=\frac{x^4+y^4}{3}$','Interpreter','latex');
xlabel('x')
ylabel('y')
zlabel('z')


文章作者: 王胜鹏
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 王胜鹏 !
评论
 上一篇
感知机 感知机
统计学习笔记 感知机 感知机适用于二分类是对线性的向量集合进行分类,是一种判别模型,将极小化误分点到超平面距离,把误分点到超平面距离作为学习的损失函数,利用梯度下降算法进行寻优。 其算法流程图如下: matlab实现 其matlab程序如
2020-11-08
下一篇 
matlab标量绘图 matlab标量绘图
matlab标量绘图 mesh or surf 常见不多说,注意xy为网格坐标,mesh类有meshc,meshz;surf类有surfc,surfl x=linspace(-2,2,25); y=linspace(-2,2,25); [x
2020-10-21
  目录