[Python][Physics]

[Python][Physics]#02 전기장 벡터의 3차원(시각화)

루크1983 2023. 5. 4. 00:32

해당 파이썬 코드는 전하 크기와 위치에 따라 발생하는 전기장 벡터를 3차원으로 시각화하는 것입니다. 예시 코드에서는 주어진 전기장 벡터 함수를 이용하여 그리드를 생성하고, 그리드 상의 각 점에서의 전기장 벡터를 계산하여 3D 그래프로 표현합니다. 따라서 코드 실행 결과로는 전기장 벡터의 방향과 크기를 보여주는 3D 그래프가 생성됩니다.

 

수식:

code:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 전하 크기와 거리 설정
q = 1
A = 1

# 전기장 함수
def E(x, y, z):
    r = np.sqrt(x**2 + y**2 + z**2)
    Ex = q*(1/r**2)*(x/r)
    Ey = q*(1/r**2)*(y/r)
    Ez = q*(1/r**2)*(z/r)
    return Ex, Ey, Ez

# 그리드 생성
x, y, z = np.meshgrid(np.linspace(-5,5,20), np.linspace(-5,5,20), np.linspace(-5,5,20))

# 전기장 계산
Ex, Ey, Ez = E(x, y, z)

# 3D 그래프 생성
fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(111, projection='3d')
ax.quiver(x, y, z, Ex, Ey, Ez, length=0.5, normalize=True, cmap='cool')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_xlim(-5,5)
ax.set_ylim(-5,5)
ax.set_zlim(-5,5)
plt.show()