Поскольку моя предыдущая попытка не увенчалась успехом, я дам ей еще одну попытку. :) Я считаю, что вы очень близки к решению. Есть две вещи, которые я заметил.
Во-первых, я считаю, что у вас есть опечатка в уравнении MATLAB для EX
. Разве это не должно быть EX =(p .* 3 .* X .* Z ./ R.^5)./ (4.*pi.*e);
, чтобы соответствовать вашему письменному уравнению?
Во-вторых, фигура, отображаемая в качестве примера, кажется, показывает направление (но не величину) поля, судя по векторам равной длины. Первоначальные векторы варьируются в некоторой степени по величине, и, следовательно, на самом деле все они не появляются в сюжете. Это связано с тем, что они уменьшаются в зависимости от 1/r^3
или 1/r^5
- так быстро, что невозможно увидеть ни одного из меньших по сравнению с теми, которые ближе к началу координат невозможно.
Так что я решил попробовать с фиксированным уравнением для EX
и нормализации векторов [EX(jj) EZ(jj)]
на единицу длину перед построением их (также изменился незначительно замышляет диапазон):
p = 1;
e = 8.85*10^(-12);
x =linspace(-0.5 , 0.5, 50);
z = linspace(-0.5 , 0.5, 50);
[X, Z ] = meshgrid(x,z);
R=sqrt(X.^2+Z.^2) ;
EX =(p .* 3 .* X .* Z ./ R.^5)./ (4.*pi.*e);
EZ = p./(4 .* pi .* e) .* (3.* Z.^2 ./R.^5 -1./ R.^3);
%// normalize the vectors so the arrows are visible
V = [EX(:) EZ(:)];
Vn = bsxfun(@rdivide, V, sqrt(sum(V.^2,2)));
Exn = reshape(Vn(:,1), size(EX));
Ezn = reshape(Vn(:,2), size(EZ));
quiver (X , Z , Exn , Ezn) ;
Это конечный результат, слегка увеличенный в - лучше?

Кстати, вы можете контролировать разрешение участка путем настройки векторов вы построить сетку из. Надеюсь, вы сможете найти подходящий выбор!
Мой друг, вы спасатель! Я очень благодарен за эту ценную помощь, которую вы мне предложили :) !!! – Alice1nw0
@ ΑθηνάΠαπαδοπούλου без проблем, я рад, что ответ вам помог :) Удачи вам в остальном проекте! – mikkola