해당 파이썬 코드는 전하 크기와 위치에 따라 발생하는 전기장 벡터를 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()
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()
'[Python][Physics]' 카테고리의 다른 글
[Python][Physics]#06 가우스 발산 정리(Gauss's Divergence Theorem)(시각화) (0) | 2023.05.04 |
---|---|
[Python][Physics]#05 벡터 필드 전기장(Electric Field, E)에 대한 라플라시안(Laplacian) 연산자 계산(시각화) (0) | 2023.05.04 |
[Python][Physics]#04 스칼라 함수 f(x, y, z)에 대한 라플라시안(Laplacian) 연산자 정의(시각화) (0) | 2023.05.04 |
[Python][Physics]#03 전기장 벡터 E의 회전 또는 회전 크기(시각화) (3) | 2023.05.04 |
[Python][Physics]#01 3차원 공간에서 두 점 사이의 거리(시각화) (3) | 2023.05.04 |