[Python][Physics]
[Python][Physics]#03 전기장 벡터 E의 회전 또는 회전 크기(시각화)
루크1983
2023. 5. 4. 00:48
이 코드는 주어진 전기장 벡터 E를 사용하여 curl(E)를 계산하고, 3D 벡터필드로 시각화하는 코드입니다.
벡터 해석학에서 전기장 벡터 E의 회전 또는 회전 크기를 나타내는 식으로, curl(E)를 계산합니다.
수식:

이 코드는 먼저 np.meshgrid 함수를 사용하여 x, y, z 좌표값을 생성하고, 이를 이용하여 전기장 벡터 E를 생성합니다. 그리고 np.gradient 함수를 사용하여 curl(E)를 계산하고, ax.quiver 함수를 사용하여 3D 벡터필드를 그립니다. 마지막으로, x, y, z축 레이블을 추가하고, plt.show() 함수를 사용하여 그래프를 출력합니다.
code:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 전기장 벡터 E를 생성합니다.
x, y, z = np.meshgrid(np.linspace(-1, 1, 10), np.linspace(-1, 1, 10), np.linspace(-1, 1, 10))
E = np.array([x, y, z])
# curl(E)를 계산합니다.
curl_E = np.array([
np.gradient(E[2], axis=1) - np.gradient(E[1], axis=2),
np.gradient(E[0], axis=2) - np.gradient(E[2], axis=0),
np.gradient(E[1], axis=0) - np.gradient(E[0], axis=1)
])
# 3D 그래프를 그립니다.
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.quiver(x, y, z, curl_E[0], curl_E[1], curl_E[2], length=0.2, normalize=True)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
