График электрического потенциала кольца заряда с использованием MATLAB - PullRequest
0 голосов
/ 08 июня 2019

Мой код не отображает правильный контурный график для плоскости, перпендикулярной кольцу заряда, проходящего через его центр должным образом. Моя проблема в том, что контурный график не заполняет 2D-пространство .

Я сделал две версии кода, одна использует цикл for для вычисления Римановская сумма, а другая просто использует команду суммы. Оба полагаются на Команда 'subs' для подстановки значений из сетки в мое выражение для V (электрический потенциал).

Версия 1 (используется для цикла):

%% Computing a symbolic expression for V for anywhere in space

syms x y z % phiprime is angle that an elemental dq of the circular 
charge is located at, x,y and z are arbitrary points in space outside the 
charge distribution

N = 200; % number of increments to sum
R = 2; % radius of circle is 2 meters

dphi = 2*pi/N; % discretizing the circular line of charge which spans 2pi

             integrand = 0;
for phiprime = 0:dphi:2*pi  

% phiprime ranges from 0 to 2pi in increments of dphi

integrand = integrand + dphi./(sqrt(((x - R.*cos(phiprime) )).^2 + ((y - 
R.*sin(phiprime) ).^2) + z.^2));

end

intgrl = sum(integrand); 
% uncessary but harmless step that I leave to show that I am using the 
sum of the above expression for each dphi    

eps0 = 8.854e-12;
kC = 1/(4*pi*eps0);
rhol = 1*10^-9; % linear charge density

    Vtot = kC*rhol*R.*intgrl; % symbolic expression for Vtot

%% Graphing V & E in plane perpedicular to ring & passing through center

[Y1, Z1] = meshgrid(-4:.5:4, -4:.5:4);
Vcont1 = subs(Vtot, [x,y,z], {0,Y1,Z1}); % Vcont1 stands for V contour; 1 
is because I do the plane of the ring next

contour(Y1,Z1,Vcont1)
xlabel('y - axis [m]')
ylabel('z - axis [m]')
title('V in a plane perpendicular to a ring of charge (N = 200)')
str = {'Red line is side view', 'of ring of charge'};
text(-1,2,str)

hold on
% visually displaying line of charge on plot
circle =  rectangle('Position',[-2 0 4 .1],'Curvature',[1,1]); 
set(circle,'FaceColor',[1, 0, 0],'EdgeColor',[1, 0, 0]);

% taking negative gradient of V and finding symbolic equations for Ex, Ey 
and Ez
        g = gradient(-1.*(kC*rhol*R.*intgrl),[x,y,z]); 

%% now substituting all the values of the 2D coordinate system for the 
symbolic x and y variables to get numeric values for Ex and Ey
Ey1 = subs(g(2), [x y z], {0,Y1,Z1});
Ez1 = subs(g(3), [x y z], {0,Y1,Z1});

E1 = sqrt(Ey1.^2 + Ez1.^2); % full numeric magnitude of E in y-z plane

Eynorm1 = Ey1./E1; % This normalizes the electric field lines
Eznorm1 = Ez1./E1;  

quiver(Y1,Z1,Eynorm1,Eznorm1);
hold off

Версия 2 (с использованием команды sum):

syms x y z
R = 2; % radius of circle is 2 meters
N=100;
dphi = 2*pi/N; % discretizing the circular line of charge which spans 2pi

phiprime = 0:dphi:2*pi; %phiprime ranges from 0 to 2pi in increments of 
dphi

integrand = dphi./(sqrt(((x - R.*cos(phiprime) )).^2 + ((y - 
R.*sin(phiprime) ).^2) + z.^2));

phiprime = 0:dphi:2*pi;
intgrl =   sum(integrand); % Reimann sum performed here

eps0 = 8.854e-12;
kC = 1/(4*pi*eps0);
rhol = 1*10^-9; % linear charge density

Vtot = kC*rhol*R.*intgrl; % symbolic expression for Vtot

Все остальное после этого пункта для версии 2 аналогично версии 1 (с заменой символов x, y, z и т. Д.)

Я бы выложил изображения того, что генерирует код, но, очевидно, вам нужно 10 репутации для этого. Спасибо stackoverflow. Это будет намного более запутанным, чтобы понять без изображений.

Векторное поле, созданное моим кодом, является правильным, в то время как контурный график, кажется, использует только несколько точек вокруг концов кольца и соединяет их прямыми линиями в странной форме ромба. Я не могу заставить его заполнить пространство.

Я не получаю сообщений об ошибках. Контурные линии накапливаются вокруг концов кольца (где потенциал будет приближаться к бесконечности) в странной форме ромба, но нигде не изображены. Мне нужен контурный график, чтобы заполнить 2D сетку

1 Ответ

0 голосов
/ 08 июня 2019

Я получил решение этого вопроса от сообщества MATLAB и разместил об этом здесь:

https://scicomp.stackexchange.com/questions/32834/graphing-electric-potential-of-a-ring-of-charge-using-matlab-help/32842#32842

Я бы опубликовал здесь, но это "вы не можете размещать изображения, потому что вы не«не хватит репутации», что сделало бы мое объяснение слишком абстрактным и трудным для понимания, поэтому посмотрите, если у вас возникли проблемы с контурным графиком MATLAB и вы хотите увидеть мою проблему и решение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...