@zy-0815
2016-12-10T15:24:37.000000Z
字数 3430
阅读 2016
计算物理
对电场的研究从来都是电磁学研究的重点,而通过电势来确定场的基本情况,是一种较为方便且常用的方法。本次作业将利用对空间中不同点的电势,来探讨不同边界条件下的电场情况,并回答课后习题5.1 5.4
电场是电荷及变化磁场周围空间里存在的一种特殊物质。电场这种物质与通常的实物不同,它不是由分子原子所组成,但它是客观存在的,电场具有通常物质所具有的力和能量等客观属性。通常在图片中我们使用电场线来表示:
上图所示为正负点电荷之间的电场,其中橘红线表示电场线,浅蓝色线表示等势线。我们实际应用中会发现,对于电势的研究要比直接研究电场更为方便,因为电势是标量函数,只和空间位置有关,因此作图时我们亦可用等势线来描绘电场。
同时,电势的表示形式是多样的,除上图所示外,我们可以类比等高线做出下图:
在这里我们将探究用这种图像来研究电场的方法。
首先对于电场的Laplace's equation
1. 无限大平板电容器
主程序如下:
from __future__ import divisionimport matplotlibimport numpy as npimport matplotlib.cm as cmimport matplotlib.mlab as mlabimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom copy import deepcopy# initialize the gridgrid = []for i in range(201):row_i = []for j in range(201):if i == 0 or i == 200 or j == 0 or j == 200:voltage = 0elif 50<=j<=51 :voltage = 1elif 150<=j<=151 :voltage = -1else:voltage = 0row_i.append(voltage)grid.append(row_i)# define the update_V function (Gauss-Seidel method)def update_V(grid):delta_V = 0for i in range(201):for j in range(201):if i == 0 or i == 200 or j == 0 or j == 200:passelif 50<=j<=51 :voltage = 1elif 150<=j<=151 :voltage = -1else:voltage_new = (grid[i+1][j]+grid[i-1][j]+grid[i][j+1]+grid[i][j-1])/4voltage_old = grid[i][j]delta_V += abs(voltage_new - voltage_old)grid[i][j] = voltage_newreturn grid, delta_V# define the Laplace_calculate functiondef Laplace_calculate(grid):epsilon = 10**(-5)*200**2grid_init = griddelta_V = 0N_iter = 0while delta_V >= epsilon or N_iter <= 10:grid_impr, delta_V = update_V(grid_init)grid_new, delta_V = update_V(grid_impr)grid_init = grid_newN_iter += 1return grid_newx = np.linspace(0,200,201)y = np.linspace(0,200,201)X, Y = np.meshgrid(x, y)Z = Laplace_calculate(grid)Ex = deepcopy(Z)Ey = deepcopy(Z)E = deepcopy(Z)for i in range(201):for j in range(201):if i == 0 or i == 200 or j == 0 or j == 200:Ex[i][j] = 0Ey[i][j] = 0else:Ex_value = -(Z[i+1][j] - Z[i][j])/2Ey_value = -(Z[i][j+1] - Z[i][j])/2Ex[i][j] = Ex_valueEy[i][j] = Ey_valuefor i in range(201):for j in range(201):E_value = np.sqrt(Ex[i][j]**2 + Ey[i][j]**2)E[i][j] = E_valuefig0, ax0 = plt.subplots()strm = ax0.streamplot(X, Y, np.array(Ey), np.array(Ex), color=np.array(E), linewidth=2, cmap=plt.cm.autumn)ax0.set_xlabel('x(m)')ax0.set_ylabel('y(m)')ax0.set_title('Electric field')plt.show()
1. 两带电平板
可见在两板内部的确近似为匀强电场
我们可以改变平板带点属性,改为两板有相同电势

若我们考虑Figure 5.6的边界条件,可进一步研究作图如下:

2. 正方形平板与有边界情况
这里我们取Figure 5.4的边界条件,即:
此时可得到图像:

3. 点电荷
这里我们仍然设定外边界的电势为零,同时为了对比方便,我们这次将3D图和等势线图合并,改变相应参数可得如下图像

4. 两个点电荷

张梓桐同学的帮助