电场强度等于电势梯度乘以-1,而这些代码在调用gradient函数求偏导后并没有乘以-1。
先把上一篇博客中不严谨的代码拿出来:
% 在二维平面上绘制一个正点电荷的电场线图。
k = 8.9875e+9; % 比例系数:
e = 1.602e-19; % 指定点电荷电量为一个电子带电量绝对值
ke = k * e; % k by e
d = -2:0.05:2;
[x, y] = meshgrid(d, d);
% 计算电位
V = ke ./ sqrt(x.^2 + y.^2 + 0.01); % 加了一个0.01,防止分母为0。
% 求电势的梯度,即电场强度
[E_x, E_y] = gradient(V); % 警告:这里没有乘以-1
sx = [linspace(-1, 1, 10), linspace(1, 1, 10), linspace(-1, 1, 10), linspace(-1, -1, 10)];
sy = [linspace(1, 1, 10), linspace(-1, 1, 10), linspace(-1, -1, 10), linspace(-1, 1, 10)];
hold on;
streamline(x, y, E_x, E_y, sx, sy);
contour(x, y, V, linspace(min(V(:)), max(V(:))