Gedeeltelijke differentieel vergelijkingen oplossen met Numpy en Scipy: een stapsgewijze aanpak
Gedeeltelijke differentiaalvergelijkingen (PDE's) zijn fundamenteel in het modelleren van verschillende fysische fenomenen, zoals warmteoverdracht, golfpropagatie en vloeistofdynamiek. Met Python-bibliotheken zoals NumPy en SciPy wordt het proces van het numeriek oplossen van deze vergelijkingen vereenvoudigd. Dit artikel biedt een stapsgewijze benadering om PDE's met deze tools op te lossen.
Het probleem instellen
Begin met het definiëren van de PDE en het domein. Denk bijvoorbeeld aan de eendimensionale warmtevergelijking:
Geef de beginomstandigheden, grensomstandigheden en parameters zoals thermische diffusiviteit α.
Het domein wordt ontcijferd
Verdeel het ruimtelijke domein in discrete punten met NumPy arrays. Maak bijvoorbeeld een raster van punten:
invoer van numpy als np
x = np.linspace(0, 1, 100]
Stel de tijdstap en de totale simulatietijd in om de numerieke stabiliteit en nauwkeurigheid te controleren.
Uitvoering van de Numerieke Methode
Gebruik eindige verschilmethoden om derivaten bij benadering te benaderen. Voor de warmtevergelijking wordt de temperatuur op elk punt expliciet bijgewerkt door een schema:
u new = u + r * (u[i+1] - 2*u[i] + u[i-1])
waarbij r een stabiliteitsparameter is die wordt berekend als α * dt / dx2.
De simulatie uitvoeren
Iterate in de tijd stappen, het bijwerken van de oplossing array bij elke iteratie. Gebruik NumPy-bewerkingen voor efficiëntie:
voor n in range(stappen):
u[1:-1] = u[1:-1] + r * (u[2:] - 2*u[1:-1] + u[:-2])
Na elke update grensvoorwaarden toepassen om de probleembeperkingen te handhaven.
Resultaten visualiseren
Gebruik bibliotheken zoals Matplotlib om de temperatuurverdeling in de loop van de tijd te visualiseren. Zet de begin- en eindtoestanden om het diffusieproces te observeren.
Voorbeeldcode:
import matplotlib.pyplot as plt
plt.plot(x, u)