Table of Contents
Osittainen DIFFERENTIAL EQUATIONS (PDEs) ovat keskeisiä mallintaminen erilaisia fyysisiä ilmiöitä, kuten lämmönsiirto, aaltojen lisäys, ja nesteen dynamiikka. Käyttämällä Python kirjastot kuten NumPy ja SciPy yksinkertaistaa prosessia ratkaista nämä yhtälöt numeerisesti. Tämä artikkeli tarjoaa vaiheittainen lähestymistapa ratkaista PDEs näillä työkaluilla.
Ongelman määrittely
Aloita määrittelemällä PDE ja verkkotunnus. Esimerkiksi, harkita yksiulotteinen lämpö yhtälö:
∂u/∂t = α ∂2u/∂x2
Määritetään alkuolosuhteet, raja-arvot ja parametrit, kuten lämpökovuus α.
Verkkoalueen discretisointi
Jaa spatiaalinen alue erillisiksi pisteiksi NumPy- matriisien avulla. Luo esimerkiksi pisteruudukko:
tuontihöperö kuten np
x = np.linspace(0, 1, 100]
Aseta aika-askel ja kokonaissimulaatioaika numeerisen vakauden ja tarkkuuden ohjaamiseksi.
Numeerinen menetelmä
Käytä rajallisia ero menetelmiä likimääräistä johdannaisia. Lämpö yhtälö, selkeä suunnitelma päivittää lämpötilaa kussakin kohdassa:
]u new = u + r * (u[i+1] - 2*u[i] + u[i-1])[]
jossa r on vakausparametri, joka on laskettu seuraavasti α * dt / dx2.
Simulaation suorittaminen
Iteroida ajan mittaan, päivittää ratkaisumatriisia jokaisella iteraatiolla. Käytä NumPy-toimintoja tehokkuuden varmistamiseksi:
, kun n on alueella [vaiheita]:[]
u[1:-1] = u[1-1] + r * (u[2:] - 2*u[1-1] + u[:-2])
Sovelletaan rajaehtoja kunkin päivityksen jälkeen ongelmarajoitusten ylläpitämiseksi.
Visualisoidaan tulokset
Käytä kirjastoja kuten Matplotlib visualisoida lämpötilajakauma ajan. Plot alku- ja lopputilat tarkkailla diffuusioprosessin.
Esimerkkikoodi:
tuontimatplotlib.pyplot tolt
plt.plot[x, u]