web-dev-qa-db-ja.com

2D平面上に電界線をプロットする

MATLABで2Dプロットに等電位線をどのようにプロットしますか? quiverまたはcontourfのどちらを使用するのが最善でしょうか?いくつかの例のポイントは次のとおりです。

p1 =(1,1)、1クーロン電荷。

p2 =(2,2)、2クーロン電荷。

p3 =(3,3)、3クーロン電荷。

私がオンラインでスーパーポジションについて行うすべての情報には、2ポイントのシナリオしかありません。それでも、これらの値のプロットの背後にある原理は本当にわかりません。

物理学をこれまでにしたことがないので、この演習は私を盲目にしました。助けてくれてありがとう!

3
Firo Proncho

この質問はあいまいに定義されています。 (タイトルで参照されている)電気力線は、等電位線と同じではありません。具体的には、電界[〜#〜] e [〜#〜]に続く電界線は、電位場[〜#〜に関連しています] v [〜#〜]byE = −∇V.

電位の場合、これはスカラー場なので、等電位線は単にその場の一定値の等高線になります。したがって、contourfはこれを視覚化するための理想的な選択肢です。

電界線に関しては、quiverは電界のベクトルのサイズと方向を表示しますが、電界線は表示しません。これらを2D平面に表示する最も簡単な方法は、streamsliceです。

これらのフィールドのMATLABでの計算とプロットは、物理方程式をベクトル化された形式で設定し、MATLABが等高線とフィールドラインを描画できる座標グリッドに対してそれらを計算する場合にすぎません。

上記のコメントのrwongのリンクで使用されている形式で電位の方程式を使用します。

Equation for electric potential due to multiple point charges

k = 8.987E9; % Coulomb's constant
p = [1,1; 2,2; 3,3];
Q = [1; 2; 3];
[X,Y] = meshgrid(0:0.05:4); % Create a grid of coordinates where V is to be calculated

V = zeros(size(X)); % Start with zero electric potential
for ii = 1:numel(Q) % Superpose the electric potential field of each charge
    V = V + k * Q(ii) ./ hypot(p(ii,1)-X, p(ii,2)-Y);
end

hContour = contourf(X,Y,V);
hColorbar = colorbar;
ylabel(hColorbar,'Electric potential (V)')

デフォルトの等高線間隔は、それらが生成する電位の特異性により、点電荷の周りに非常に密に詰め込まれます。 Statistics Toolboxを使用している場合は、quantileを使用して、等間隔の等高線レベルを見つけることで、これをすばやく改善できます。

hContour.LevelList = [0 quantile(V(:),10)];

電界は、生のベクトル方程式よりも、既存の電位場から導出する方が簡単です。

[Ex,Ey] = -gradient(V);
validColumns = all(isfinite(Ex) & isfinite(Ey)); % Ignore columns where E contains infinite values due to the point charges since streamslice can't handle them
hold on
hLines = streamslice(X(:,validColumns),Y(:,validColumns),Ex(:,validColumns),Ey(:,validColumns));
set(hLines,'Color','r');

Resulting contourf figure

4
Will