# Likevektskonsentrasjoner (eksempel 15.6) 
Her skal vi gjøre eksempel 15.6 (side 527) fra læreboken. Her har vi gitt likevekten,

$$\text{H}_2(\text{g}) + \text{I}_2 (\text{g}) \rightleftharpoons   2\text{HI} (\text{g}), \quad K_{\text{c}} = 54.3,$$

og vi har gitt antall mol før likevekten innstilles:
- H$_2$: 0.750 mol
- I$_2$: 0.750 mol.

Videre har vi gitt at volumet til beholderen der reaksjonen skjer er 1.00 L og at temperaturen er 430 °C.
Vi blir så bedt om å finne $[\text{H}_2]$, $[\text{I}_2]$ og $[\text{HI}]$ ved likevekt.

Vi skal løse denne oppgaven ved å bruke Python. For å kunne regne symbolsk skal vi bruke et bibliotek som heter [SymPy](https://www.sympy.org/).

(Merk: Her er volumet 1.00 L. For å spare litt skriving deler vi ikke eksplisitt på 1.00 L for å gjøre om til konsentrasjoner.)


```python
import sympy as sym  # Importer SymPy
```


```python
# Definer størrelsene vi kjenner
START_H2 = 0.750
START_I2 = 0.750
KC = 54.3
```

Over har vi listet opp hva vi kjenner. La oss også liste opp alle de ukjente som vi skal bestemme:
- $[\text{H}_2]$ ved likevekt,
- $[\text{I}_2]$ ved likevekt,
- $[\text{HI}]$ ved likevekt.

Vi har altså tre ukjente. La oss definere de som størrelser (spesifikt som [SymPy-symboler](https://docs.sympy.org/latest/tutorial/intro.html#a-more-interesting-example)) slik at vi kan regne med de (dette blir litt som når vi introduserer $x$ osv. for ukjente størrelser i ligninger vi skriver for hånd):


```python
# Vi definerer de ukjente størrelsene:
c_H2, c_I2, c_HI = sym.symbols('c_H2 c_I2 c_HI')
```

Vi har nå definert konsentrasjonene. Disse er foreløpig ukjente. For å bestemme de, så trenger vi noen ligninger som relaterer de til hverandre. Mulige slike ligninger er:
- likevektskonstanten
- massebalanser


```python
# La oss begynne med likevektskonstanten:
ligning1 = sym.Eq((c_HI * c_HI)/(c_H2 * c_I2), KC)
```

Vi kan be SymPy skrive ut hva denne ligningen er, for å sjekke at den ser ut som vi hadde tenkt:


```python
ligning1
```

Vi lager så molbalanser for de to grunnstoffene. Her bruker vi at:
- Ved starten er det 0.750 mol H$_2$: Det er altså $2 \times 0.750 = 1.5$ mol H i systemet. Vi "mister" ikke noen H-atomer ved reaksjonen, slik at det fortsatt må være 1.5 mol H når likevekten er innstilt.
- Ved starten er det 0.750 mol I$_2$: Det er altså $2 \times 0.750 = 1.5$ mol I i systemet. Vi "mister" ikke noen I-atomer ved reaksjonen, slik at det fortsatt må være 1.5 mol I når likevekten er innstilt.

Vi kan derfor her lage to molbalanser:
- En for antall mol hydrogen:
  $$2[\text{H}_2]_{\text{start}} = 2[\text{H}_2]_{\text{likevekt}} + [\text{HI}]_{\text{likevekt}}.$$

- En for antall mol jod:
  $$2[\text{I}_2]_{\text{start}} = 2[\text{I}_2]_{\text{likevekt}} + [\text{HI}]_{\text{likevekt}}.$$

La oss formulere dette som ligninger:


```python
ligning2 = sym.Eq(2 * START_H2, 2 * c_H2 + c_HI)
ligning3 = sym.Eq(2 * START_I2, 2 * c_I2 + c_HI)
```


```python
# Skriv ut for dobbeltsjekk:
ligning2
```


```python
ligning3
```

Vi har nå tre ligninger og vi har tre ukjente. Dette kan vi (eller i dette tilfellet, SymPy) løse:


```python
løsninger = sym.solve([ligning1, ligning2, ligning3], [c_H2, c_I2, c_HI], dict=True)
```


```python
løsninger
```

En av løsningene SymPy fant gir negative konsentrasjoner. Dette er en ugyldig løsning og vi beholder bare den som har kun positive løsninger:


```python
# Vis gyldige løsninger:
gyldige = []
for løsning in løsninger:
    if all(i > 0 for i in løsning.values()):
        gyldige.append(løsning)
        print('Gyldig løsning:')
        print(f'- [H2] = {løsning.get(c_H2):.3g} M')
        print(f'- [I2] = {løsning.get(c_I2):.3g} M')
        print(f'- [HI] = {løsning.get(c_HI):.3g} M')
```

Eksempelet i læreboken finner til sammenligning:
- $[\text{H}_2] = 0.160$ M,
- $[\text{I}_2] = 0.160$ M,
- $[\text{HI}] = 1.18$ M.

a96adcf47ee5105b30c35e7944b8d9e3ced4ab54
ipynb
Jupyter Notebook
jupyter/likevekt/likevekt156.ipynb
andersle/kj1000
9d68e9810c5541ebbe2e4559df8d066a85780129
CC-BY-4.0
jupyter/likevekt/likevekt156.ipynb
andersle/kj1000
9d68e9810c5541ebbe2e4559df8d066a85780129
CC-BY-4.0
2021-06-21T15:04:15.000Z
2021-11-10T10:58:07.000Z
jupyter/likevekt/likevekt156.ipynb
andersle/kj1000
9d68e9810c5541ebbe2e4559df8d066a85780129
CC-BY-4.0
Qwen/Qwen-72B
1. YES
2. YES