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]