--------------
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 1. Háromdimenziós koordinátarács (Grid) létrehozása
x = np.linspace(-2, 2, 10)
y = np.linspace(-2, 2, 10)
z = np.linspace(-2, 2, 10)
X, Y, Z = np.meshgrid(x, y, z)
# 2. A vektormező komponenseinek definiálása (F = [U, V, W])
# Példa: F(x,y,z) = [x, y, z] -> Forrás mező
U = X
V = Y
W = Z
# 3. A divergencia kiszámítása numerikus gradiensek segítségével
# A np.gradient visszaadja a parciális deriváltakat az egyes tengelyek mentén
dU_dx, _, _ = np.gradient(U, x, y, z)
_, dV_dy, _ = np.gradient(V, x, y, z)
_, _, dW_dz = np.gradient(W, x, y, z)
# Divergencia: div(F) = dU/dx + dV/dy + dW/dz
divergence = dU_dx + dV_dy + dW_dz
# 4. Az eredmények kiíratása a konzolra (középső pont mintáján)
print(f"A mező divergenciája a középpontban: {divergence[5, 5, 5]:.2f}")
# 5. Vizualizáció 3D-ben
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
# Vektormező kirajzolása nyilakkal (Quiver plot)
# A szín a divergencia értékét tükrözi (mivel itt konstans, egységes lesz)
quiver = ax.quiver(X, Y, Z, U, V, W, length=0.1, normalize=True, cmap='jet')
# Tengelyek feliratozása
ax.set_xlabel('X tengely')
ax.set_ylabel('Y tengely')
ax.set_zlabel('Z tengely')
ax.set_title('3D Vektormező és Divergencia vizualizáció')
plt.show()
---------------
Nincsenek megjegyzések:
Megjegyzés küldése