Forelesning 7: Dynamiske systemer#

Fartslover (ratelover)#

Vi bruker følgende reaksjon som eksempel (vi later først som om den er reversibel):

\[ H_2 (g) + I_2 (g) \rightarrow 2HI (g)\]

Vi har følgende ratelov for reaksjonen:

\[\frac{d[HI]}{dt} = k_r[H_2][I_2]\]
import numpy as np
import matplotlib.pyplot as plt

# Initialbetingelser
H2_0 = 1 # mol/L
I2_0 = 0.5 # mol/L
HI_0 = 0 # mol/L
k = 3E-2

# Tidsparametre
t0 = 0
tid_slutt = 700 # sekunder
dt = 1E-3
N = int((tid_slutt - t0)/dt) + 1

# Arrayer
t = np.zeros(N)
H2 = np.zeros(N)
I2 = np.zeros(N)
HI = np.zeros(N)

# Initialisere arrayer
t[0] = t0
H2[0] = H2_0
I2[0] = I2_0
HI[0] = HI_0

# Integrasjonløkke
for i in range(N-1):
    # Fartslovene
    dHIdt = k*H2[i]*I2[i]
    dI2dt = -0.5*dHIdt
    dH2dt = dI2dt
    # Eulers metode
    H2[i+1] = H2[i] + dH2dt*dt
    I2[i+1] = I2[i] + dI2dt*dt
    HI[i+1] = HI[i] + dHIdt*dt
    # Oppdatere tidssteget
    t[i+1] = t[i] + dt

# Plotting av resultatene
plt.plot(t, H2, label='H2', color='blue')
plt.plot(t, I2, label='I2', color='green')
plt.plot(t, HI, label='HI', color='red')
plt.xlabel('Tid (s)')
plt.ylabel('Konsentrasjon (mol/L)')
plt.title('Konsentrasjoner av H2, I2 og HI over tid')
plt.legend()
plt.show()
../../_images/d2f87e84196c3717b6a43974191ce7060b73c255cfdd9ed185237a67f11cb53e.png