姓名:劉爍爍 ;學(xué)號:20181213904热幔;學(xué)院:廣州研究院
原鏈接:https://zhuanlan.zhihu.com/p/161734503? 來源:知乎
【嵌牛導(dǎo)讀】電磁學(xué)的基礎(chǔ)
【嵌牛鼻子】散度喷鸽、旋度众雷、梯度定義
【嵌牛提問】怎么matlab把這些概念表示出來呢?
【嵌牛正文】散度做祝、旋度砾省、梯度定義及matlab表示
物理學(xué)中把某個(gè)物理量在空間一個(gè)區(qū)域內(nèi)的分布稱為場。從各種場的取值性質(zhì)來看可以分成兩大類混槐,一類是每個(gè)點(diǎn)對應(yīng)一個(gè)數(shù)值编兄,這種場統(tǒng)稱為標(biāo)量場,如溫度場声登、密度場等;另一類是每 個(gè)點(diǎn)對應(yīng)一個(gè)向量,這種場稱為向量場狠鸳,如引力場、梯度場悯嗓、電場件舵、磁場等。場本身的性質(zhì)與坐標(biāo)選擇無關(guān),但對各種場的分析和計(jì)算應(yīng)該選擇適當(dāng)?shù)淖鴺?biāo)系脯厨,本章均以直角坐標(biāo)系為例铅祸,分析場的梯度、散度和旋度等特性合武。同時(shí),詳細(xì)介紹標(biāo)量場的梯度临梗、矢量場的散度和旋度的MATLAB處理方法涡扼。
一、場的數(shù)學(xué)模型和物理模型
場(field)在數(shù)學(xué)上是指一個(gè)向量到另一個(gè)向量或數(shù)的映射夜焦。一般的壳澳,在常規(guī)的有關(guān)電磁學(xué)的物理研究中,我們所談?wù)摰膱雒>瑢?shí)質(zhì)上是一個(gè)(二維)三維空間中的點(diǎn)對實(shí)數(shù)集和(二維)三維實(shí)向量的映射巷波。對實(shí)數(shù)集的映射,稱之為標(biāo)量場(也叫作標(biāo)量函數(shù))卸伞,對向量(又名矢量)的映射稱之為矢量場(矢量函數(shù))抹镊。物理上,場是指(一個(gè)或者一族)物理量在空間中分布的狀況的綜合荤傲,這種綜合同樣被看作是一種物質(zhì)垮耳。在量子力學(xué)的語境下,這樣的綜合是物質(zhì)的一般形式遂黍,因?yàn)樗闹饕芯繉ο缶褪俏镔|(zhì)(量子系統(tǒng))的“概率分布場”终佛。
“在物理里,場(英語:Field)是一個(gè)以時(shí)空為變數(shù)的物理量雾家。空間中彌漫著的基本相互作用被命名為“場”铃彰。[1]場可以分為標(biāo)量場、矢量場和張量場等芯咧,依據(jù)場在時(shí)空中每一點(diǎn)的值是標(biāo)量牙捉、矢量還是張量而定。例如敬飒,經(jīng)典重力場是一個(gè)矢量場:標(biāo)示重力場在時(shí)空中每一個(gè)的值需要三個(gè)量邪铲,此即為重力場在每一點(diǎn)的重力場矢量分量。更進(jìn)一步地无拗,在每一范疇(標(biāo)量带到、矢量、張量)之中英染,場還可以分為“經(jīng)典場”和“量子場”兩種阴孟,依據(jù)場的值是數(shù)字或量子算符而定。
場被認(rèn)為是延伸至整個(gè)空間的税迷,但實(shí)際上永丝,每一個(gè)已知的場在夠遠(yuǎn)的距離下,都會縮減至無法量測的程度箭养。例如慕嚷,在牛頓萬有引力定律里,重力場的強(qiáng)度是和距離平方成反比的,因此地球的重力場會隨著距離很快地變得不可測得(在宇宙的尺度之下)喝检。
定義場是一個(gè)“空間里的數(shù)”嗅辣,這不應(yīng)該減損場在物理上所有的真實(shí)性(如定義“質(zhì)量”為秤上的數(shù)字)∧铀担“場占有空間澡谭。場含有能量、動(dòng)量损俭。場的存在排除了真正的真空蛙奖。”[2]真空中沒有物質(zhì)杆兵,但并不是沒有場的雁仲。場形成了一個(gè)“空間的狀態(tài)”[3]
當(dāng)一個(gè)電荷移動(dòng)時(shí),另一個(gè)電荷并不會立刻感應(yīng)到琐脏。第一個(gè)電荷會感應(yīng)到一個(gè)反作用力攒砖,并獲得動(dòng)量,但第二個(gè)電荷則沒有感應(yīng)日裙,直到第一個(gè)電荷移動(dòng)的影響以光速傳遞到第二個(gè)電荷那里吹艇,并給予其動(dòng)量之后。場的存在解決了關(guān)于第二個(gè)電荷移動(dòng)前昂拂,動(dòng)量存在在哪里的問題受神。因?yàn)橐罁?jù)動(dòng)量守恒定律,動(dòng)量必存在于某處政钟。物理學(xué)家認(rèn)為動(dòng)量應(yīng)該存在于場之中。如此的認(rèn)定讓物理學(xué)家們相信電磁場是真實(shí)的存在樟结,使得場的概念成為整個(gè)現(xiàn)代物理的范式养交。”——維基百科語瓢宦。
為了運(yùn)用微積分以及更為復(fù)雜的數(shù)學(xué)工具研究場的細(xì)節(jié)性質(zhì)和整體性質(zhì)碎连,人們給出了如下定義:
梯度:
梯度的本意是一個(gè)向量(矢量),表示某一函數(shù)在該點(diǎn)處的方向?qū)?shù)沿著該方向取得最大值驮履,即函數(shù)在該點(diǎn)處沿著該方向(此梯度的方向)變化最快鱼辙,變化率最大(為該梯度的模)。
定義一個(gè)三元標(biāo)量函數(shù)(三維空間的標(biāo)量場)?
?玫镐,對于空間中的每一點(diǎn)?
?(D為定義域或者說場存在的區(qū)域)倒戏,都可以定義出一個(gè)矢量?
散度:
散度(divergence)可用于表征空間各點(diǎn)矢量場發(fā)散的強(qiáng)弱程度恐似,物理上杜跷,散度的意義是場的有源性。當(dāng)div F>0 ,表示該點(diǎn)有散發(fā)通量的正源(發(fā)散源)葛闷;當(dāng)div F<0 表示該點(diǎn)有吸收通量的負(fù)源(洞或匯)憋槐;當(dāng)div F=0,表示該點(diǎn)無源淑趾。
定義散度阳仔,實(shí)際上是借助通量這一概念來定義的。要定義通量扣泊,必須引入面元矢量這一概念近范。
設(shè) S為一個(gè)包含體積 V的閉合空間曲面, dS 為曲面 S上的面元矢量旷赖,滿足:dS=dSe⊥ 顺又。定義矢量 F 與? dS的內(nèi)積?
F點(diǎn)乘dS 為通過面元矢量 ds的通量,則散度可定義為:
旋度:
旋度是向量分析中的一個(gè)向量算子等孵,可以表示三維向量場對某一點(diǎn)附近的微元造成的旋轉(zhuǎn)程度稚照。 這個(gè)向量提供了向量場在這一點(diǎn)的旋轉(zhuǎn)性質(zhì)。旋度向量的方向表示向量場在這一點(diǎn)附近旋轉(zhuǎn)度最大的環(huán)量的旋轉(zhuǎn)軸俯萌,它和向量旋轉(zhuǎn)的方向滿足右手定則果录。旋度向量的大小則是繞著這個(gè)旋轉(zhuǎn)軸旋轉(zhuǎn)的環(huán)量與旋轉(zhuǎn)路徑圍成的面元的面積之比。舉例來說咐熙,假設(shè)一臺滾筒洗衣機(jī)運(yùn)行的時(shí)候弱恒,從前方看來,內(nèi)部的水流是逆時(shí)針旋轉(zhuǎn)棋恼,那么中心水流速度向量場的旋度就是朝前方向外的向量返弹。
百度百科上引用的旋度定義
拉普拉斯算子:
在計(jì)算梯度時(shí)用到了一個(gè)算符稱為Nabla算子,記為?
?爪飘,拉普拉斯算子?
通過推導(dǎo)义起,可以證明?
標(biāo)量場的可視化
plot函數(shù):
plot? Linear plot.
? ? plot(X,Y) plots vector Y versus vector X. If X or Y is a matrix,
? ? then the vector is plotted versus the rows or columns of the matrix,
? ? whichever line up.? If X is a scalar and Y is a vector, disconnected
? ? line objects are created and plotted as discrete points vertically at
? ? X.
? ? plot(Y) plots the columns of Y versus their index.
? ? If Y is complex, plot(Y) is equivalent to plot(real(Y),imag(Y)).
? ? In all other uses of plot, the imaginary part is ignored.
? ? Various line types, plot symbols and colors may be obtained with
? ? plot(X,Y,S) where S is a character string made from one element
? ? from any or all the following 3 columns:
? ? ? ? ? b? ? blue? ? ? ? ? .? ? point? ? ? ? ? ? ? -? ? solid
? ? ? ? ? g? ? green? ? ? ? o? ? circle? ? ? ? ? ? :? ? dotted
? ? ? ? ? r? ? red? ? ? ? ? x? ? x-mark? ? ? ? ? ? -.? ? dashdot
? ? ? ? ? c? ? cyan? ? ? ? ? +? ? plus? ? ? ? ? ? ? --? ? dashed?
? ? ? ? ? m? ? magenta? ? ? *? ? star? ? ? ? ? ? (none)? no line
? ? ? ? ? y? ? yellow? ? ? ? s? ? square
? ? ? ? ? k? ? black? ? ? ? d? ? diamond
? ? ? ? ? w? ? white? ? ? ? v? ? triangle (down)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ^? ? triangle (up)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <? ? triangle (left)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? >? ? triangle (right)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p? ? pentagram
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? h? ? hexagram
? ? For example, plot(X,Y,'c+:') plots a cyan dotted line with a plus
? ? at each data point; plot(X,Y,'bd') plots blue diamond at each data
? ? point but does not draw any line.
? ? plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by
? ? the (X,Y,S) triples, where the X's and Y's are vectors or matrices
? ? and the S's are strings.?
? ? For example, plot(X,Y,'y-',X,Y,'go') plots the data twice, with a
? ? solid yellow line interpolating green circles at the data points.
? ? The plot command, if no color is specified, makes automatic use of
? ? the colors specified by the axes ColorOrder property.? By default,
? ? plot cycles through the colors in the ColorOrder property.? For
? ? monochrome systems, plot cycles over the axes LineStyleOrder property.
? ? Note that RGB colors in the ColorOrder property may differ from
? ? similarly-named colors in the (X,Y,S) triples.? For example, the
? ? second axes ColorOrder property is medium green with RGB [0 .5 0],
? ? while plot(X,Y,'g') plots a green line with RGB [0 1 0].
? ? If you do not specify a marker type, plot uses no marker.
? ? If you do not specify a line style, plot uses a solid line.
? ? plot(AX,...) plots into the axes with handle AX.
? ? plot returns a column vector of handles to lineseries objects, one
? ? handle per plotted line.
? ? The X,Y pairs, or X,Y,S triples, can be followed by
? ? parameter/value pairs to specify additional properties
? ? of the lines. For example, plot(X,Y,'LineWidth',2,'Color',[.6 0 0])
? ? will create a plot with a dark red line width of 2 points.
? ? Example
? ? ? x = -pi:pi/10:pi;
? ? ? y = tan(sin(x)) - sin(tan(x));
? ? ? plot(x,y,'--rs','LineWidth',2,...
? ? ? ? ? ? ? ? ? ? ? 'Markerfdgecolor','k',...
? ? ? ? ? ? ? ? ? ? ? 'Markerfacecolor','g',...
? ? ? ? ? ? ? ? ? ? ? 'MarkerSize',10)
示例:
x = 0:pi/1000:2*pi;? ? ? ? % x取值范圍由0到2π,pi/1000是遞增的步長
y =sin( 2*x + pi/4);? ? ? ? %表示y的函數(shù)表達(dá)式是sin類型
plot(x,y)? ? ?
三維網(wǎng)格函數(shù)mesh
三維曲面色塊函數(shù)surf
示例:
x=linspace(-2, 2, 25);? ? %在-2到2取25個(gè)點(diǎn)
y=linspace(-2, 2, 25);? ? ? %在-2到2取25個(gè)點(diǎn)
[xx, yy]=meshgrid(x, y);? ? %生成網(wǎng)格采樣點(diǎn)
zz=sqrt( xx.^2 + yy.^2);? ? %生成矩陣Z
surf( xx,yy,zz);? ? ? ? ? ? %畫出著色的三維曲面
mesh函數(shù)
surf函數(shù)
三維隱函數(shù):
[X,Y,Z]=meshgrid(linspace(-10,10));? ? %形成網(wǎng)格數(shù)據(jù)(X,Y,Z)
V=X.^2+Y.^2-Z.^2;? ? ? ? ? ? ? ? ? %形成體數(shù)據(jù)V
isosurface(X,Y,Z,V,1);? ? ? ? ? ? ? ? %繪制三維隱函數(shù)圖形X.^2+Y.^2-Z.^2=1
axis equal
colormap([1 0 0]);? ? ? ? ? ? ? ? ? ? %改變圖形顏色為紅色
brighten(0.5);? ? ? ? ? ? ? ? ? ? ? ? %進(jìn)行增亮?
camlight right;? ? ? ? ? ? ? ? ? ? ? %設(shè)置光源位置
lighting phong;? ? ? ? ? ? ? ? ? ? ? %設(shè)置光照模式
figure(2);
fv=isosurface(X,Y,Z,V,1);? ? ? ? ? ? ? %計(jì)算等值面所對應(yīng)的面元和頂點(diǎn)
p=patch(fv);? ? ? ? ? ? ? ? ? ? ? ? %繪制等值面
set(p,'FaceColor','red','EdgeColor','none');? %修飾等值面
axis equal? ? ? ? ? ? ? ? ? ? ? ? ? ? %等比例顯示?
立體側(cè)視圖和俯視圖
矢量場可視化:
采樣點(diǎn)生成函數(shù)meshgrid
箭頭表示矢量函數(shù)quiver
流線函數(shù)streamline
示例:
x=-3:1:3;
y=-2:1:2;
[X,Y]=meshgrid(x,y)
采樣點(diǎn)矩陣
x = [0 0 0 0];
y = x;
u = [1 -1 0 0];
v = [0 0 1 -1];
quiver(x, y, u, v);
u = [1 1 1; 1 1 1];
v = u;
quiver(u, v);
流線函數(shù)streamline
三維矢量場圖:
[x,y]=meshgrid(-3:.5:3,-3:.5:3);? ? ? ? %生成所需的網(wǎng)格采樣點(diǎn)师崎,x與y在-3到3區(qū)間
z=y.^2-x.^2;? ? ? ? %定義函數(shù)
[u,v,w]= surfnorm(z);? ? ? ? %取三維曲面的法線
quiver3(z,u,v,w) ;? ? %繪制三維矢量場圖
三維矢量場函數(shù)quiver3
梯度:
symsxyz%定義符號變量f=2*y*z*sin(x)+3*x*sin(z)*cos(y);%定義函數(shù)gradient(f,[x,y,z])%利用符號計(jì)算函數(shù)的梯度
梯度場示意圖
syms x y? ? ? ? ? ? ? ? ? ? %定義符號變量
F = -(sin(x) + sin(y))^2;? ? ? ? %定義函數(shù)
g = gradient(F, [x, y])? ? ? ? %計(jì)算梯度的表達(dá)式
[X, Y] = meshgrid(-1:.1:1,-1:.1:1); %產(chǎn)生網(wǎng)格
G1 = subs(g(1), [x y], {X,Y});? %用{X,Y}替換所有出現(xiàn)的[x,y]默终,然后計(jì)算g(1)
G2 = subs(g(2), [x y], {X,Y});? %用{X,Y}替換所有出現(xiàn)的[x,y],然后計(jì)算g(2)
quiver(X, Y, G1, G2); ? %繪制梯度對應(yīng)的箭頭圖
等高線:
v = -2:0.2:2; %定義向量v
[x,y]=meshgrid(v); %利用v產(chǎn)生網(wǎng)格
z = x.* exp(-x.^2 - y.^2); %計(jì)算網(wǎng)格格點(diǎn)上的函數(shù)值
[px,py] = gradient(z,.2,.2); %數(shù)值方法計(jì)算梯度
figure?
contour(x,y,z); %繪制函數(shù)z的等高線
hold on; %保持模式打開
quiver(x,y,px,py); %繪制梯度的箭頭圖
hold off; %保持模式關(guān)閉
散度:
syms x y z real %定義符號變量
F = [ cos(x+2*y), sin(x-2*y) ]; %定義函數(shù)F
g = divergence(F,[x y])? ? ? ? ? ? ? ? %求函數(shù)F的散度犁罩,符號形式
divF=matlabFunction(g); %將散度轉(zhuǎn)換為函數(shù)形式
x=linspace(-2.5,2.5,20);
[X,Y]=meshgrid(x,x); %定義網(wǎng)格
Fx=cos(X+2*Y); %F的x分量
Fy=sin(X-2*Y); %F的y分量
div_num=divF(X,Y); %散度的數(shù)值形式
pcolor(X,Y,div_num); %繪制散度
shading interp; %差值
colorbar; %繪制色條
hold on; %保持繪圖模式打開
quiver(X,Y,Fx,Fy,'k','linewidth',1); %繪制箭頭圖
紅色部分為“源”齐蔽,矢量流線發(fā)散;藍(lán)色部分為“匯(漏)”床估,矢量流線匯聚
旋度可視化:
計(jì)算旋度:
syms x y z
V = [x^3*y^2*z, y^3*z^2*x, z^3*x^2*y];
X = [x y z];
curl(V,X)
證明:一個(gè)標(biāo)量函數(shù)的梯度(函數(shù))的旋度恒為零含滴。
syms x y z
f = x^2 + y^2 + z^2;
vars = [x y z];
curl(gradient(f,vars),vars)
計(jì)算結(jié)果
圖形:
%%計(jì)算一個(gè)余弦函數(shù)的一維拉普拉斯矩陣
syms x y z real %定義符號變量
F = [ cos(x+2*y), sin(x-2*y) ]; %定義函數(shù)F
G = curl([F,0],[x y z])? ? ? ? ? ? ? ? %計(jì)算F的旋度,并賦予G?
curlF=matlabFunction(G(3)); %將G的z分量丐巫,賦予curlF
x=linspace(-2.5,2.5,20);
[X,Y]=meshgrid(x,x); %定義網(wǎng)格
Fx=cos(X+2*Y); %計(jì)算F的x分量
Fy=sin(X-2*Y); %計(jì)算F的y分量
rot=curlF(X,Y); %計(jì)算旋度的值
pcolor(X,Y,rot); %繪制旋度
shading interp; %顏色做插值
colorbar; %繪制色條
hold on; %保持模式打開
quiver(X,Y,Fx,Fy,'k','linewidth',1); %繪制箭頭圖蛙吏,并設(shè)置顏色為黑色源哩,線寬為1
%%
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)
只顯示Z方向上的旋度的結(jié)果:順時(shí)針散度小于零,逆時(shí)針散度大于零
拉普拉斯運(yùn)算的可視化:
矢量函數(shù)的拉普拉斯運(yùn)算:
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函數(shù):有限差分法對拉普拉斯算子的擬合:
一維拉普拉斯矩陣:
x = linspace(-2*pi,2*pi); %定義x向量
U = cos(x); %計(jì)算cos(x)
L = 4*del2(U,x); %計(jì)算U的拉普拉斯鸦做,注意系數(shù)4
plot(x,U,x,L)? ? %畫出U和U的拉普拉斯曲線
legend('U(x)','L(x)','Location','Best') %給出圖例
本質(zhì)上就是求二階導(dǎo)
多元函數(shù):
[x,y] = meshgrid(-5:0.25:5,-5:0.25:5);? %定義函數(shù)在x励烦,y方向的區(qū)域
U = 1/3.*(x.^4+y.^4);? ? ? ? ? ? ? ? %定義函數(shù)U
h = 0.25;? ? ? ? %U中各點(diǎn)的間距在所有方向上都相等,所以可以指定一個(gè)間距h
L = 4*del2(U,h);? %計(jì)算U的拉普拉斯變換
surf(x,y,L);
grid on;
title('Plot of $\Delta U(x,y) = 4x^2+4y^2$','Interpreter','latex')
xlabel('x');
ylabel('y');
zlabel('z');
view(35,14);