2026. szeptember 7., hétfő

A térbeli divergencia elmélete

A térbeli divergencia egy vektormező adott pontbeli megváltozását – forrás- vagy nyelő jellegét – mérő differenciál operátor, amely megadja, hogy mennyi vektor áramlik ki egy adott kis térfogatból. Van pozitív és negatív divergencia, és zéró divergencia, ahol a beáramlás és a kiáramlás egyensúlyban van (forrásmentes vagy szolenoidális mező). Ahhoz hogy metrikus legyen skalárissá kell alakítani. A divergencia kiszámítása numerikus gradiensek segítségével történik.
--------------
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