python绘制空间自由电荷电场

import numpy as np
from mayavi import mlab
from sympy import *
from mayavi.mlab import *

q = 1 #电荷量
e0 = 4*3.14*8.85 #4×pi×ε0 放大10的12次方

def cacualte():
    x, y, z = np.mgrid[-1:1:20j, -1:1:20j,-1:1:20j]#x y z网格化,形成填充三维坐标数组

    r=np.sqrt(x**2+y**2+z**2)#与原点距离
   
    E_scale = q/(e0*(r**2))#电场大小
    Exoy = E_scale*(np.sqrt(x**2+y**2)/r)#电场在XOY投影大小
    Ex = Exoy*(x/np.sqrt(x**2+y**2))#电场在X分量大小
    Ey = Exoy*(y/np.sqrt(x**2+y**2))#电场在Y分量大小
    Ez = E_scale*(z/r)#电场在Z分量大小
    
    u = Ex #三坐标分量赋值
    v = Ey
    w = Ez
    
    scalars = x * x * 0.5 + y * y + z * z * 2.0#切片范围
    ball = mlab.points3d(np.array(0), np.array(0.), np.array(0),color=(1,0,0),extent = [-0.01,0.01,-0.01,0.01,-0.01,0.01])#插入小球代表电荷
    obj1 = volume_slice(x,y,z,scalars, plane_orientation='x_axes',extent = [-1,1,-1,1,1,1])#插入切片以观察矢量场
    obj = quiver3d(x, y, z, u, v, w, 
  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
绘制同种电荷电场线,可以使用 Python 中的 Matplotlib 库进行绘图。以下是一个简单的示例代码,可以绘制出两个同种电荷电场线: ```python import numpy as np import matplotlib.pyplot as plt # 定义电荷电荷量和位置 q1 = 1.0 x1, y1 = 0, 0 q2 = 1.0 x2, y2 = 2, 0 # 定义电场强度函数 def E(q, r0, x, y): """返回电荷q在点(x,y)处产生的电场强度""" den = np.hypot(x - r0[0], y - r0[1])**3 return q * (x - r0[0]) / den, q * (y - r0[1]) / den # 定义网格和坐标轴 nx, ny = 64, 64 x = np.linspace(-3, 3, nx) y = np.linspace(-3, 3, ny) X, Y = np.meshgrid(x, y) # 计算电场强度 Ex, Ey = np.zeros((ny, nx)), np.zeros((ny, nx)) for i in range(nx): for j in range(ny): # 计算第一个电荷电场强度 ex1, ey1 = E(q1, (x1, y1), x[i], y[j]) # 计算第二个电荷电场强度 ex2, ey2 = E(q2, (x2, y2), x[i], y[j]) # 计算总电场强度 Ex[j, i] = ex1 + ex2 Ey[j, i] = ey1 + ey2 # 绘制电场线 plt.streamplot(x, y, Ex, Ey, color='k', linewidth=1, density=2) # 添加标题和坐标轴标签 plt.title('Same Charge Electric Field Lines') plt.xlabel('x') plt.ylabel('y') # 显示图形 plt.show() ``` 上述代码中,我们首先定义了两个电荷电荷量和位置,然后定义了一个计算电场强度的函数,接着定义了网格和坐标轴。最后,我们通过计算电场强度并使用 `streamplot()` 函数绘制电场线。运行上述代码可以得到如下所示的电场线图像: ![Same Charge Electric Field Lines](https://img-blog.csdnimg.cn/20210428151527523.png)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值