Het emissiespectrum van een chemisch element of een chemische verbinding is het frequentiespectrum van de electromagnetische straling die wordt uitgezonden wanneer een atoom of een molecule overgaat van een hoge energietoestand naar een lage energietoestand. De energie van het uitgezonden foton is gelijk aan het verschil in energie tussen de twee toestanden.

Elk atoom heeft verschillende mogelijke elektronentransities, die elk corresponderen met een specifiek energieverschil. Deze verzameling van mogelijke transities — die aanleiding geven tot een straling in verschillende golflengten — vormt een emissiespectrum.

Elk chemisch element heeft een uniek emissiespectrum. Bij wijze van voorbeeld tonen we hieronder het referentiespectrum van waterstof (H) waarop vier spectraallijnen te zien zijn.

referentiespectrum waterstof (H)
Het referentiespectrum van waterstof (H).

Spectroscopie kan dus gebruikt worden om de atomen te identificeren die voorkomen in een stof met onbekende samenstelling. De emissiespectra van moleculen kunnen ook gebruikt worden bij de chemische analyse van stoffen.

Hierbij moet rekening gehouden worden met een aantal vormen van variatie die kunnen optreden bij het bepalen van emissiespectra. Door meetfouten wijkt de gemeten golflengte van een spectraallijn doorgaans lichtjes af van een spectraallijn in een emissiespectrum dat als referentie gebruikt wordt. Bovendien vinden bij het bepalen van het energiespectrum van een bepaalde stof niet noodzakelijk alle mogelijke elektronentransities plaats, waardoor de corresponderende spectraallijnen niet gemeten worden. Door interferenties tussen atomen kunnen er ook spectraallijnen opduiken die niet in de referentiespectra van de individuele atomen voorkomen.

identificatie spectraallijnen
Het referentiespectrum van waterstof (midden) waarop vier spectraallijnen te zien zijn. Boven en onder het referentiespectrum staan twee emissiespectra van waterstof zoals ze gemeten werden in het laboratorium. We zien telkens lichte afwijkingen in de gemeten golflengte van de spectraallijnen (de golflengten worden aangegeven boven of onder de spectra). Alle corresponderende spectraallijnen tussen het referentiespectrum en de gemeten spectra zijn aangegeven met een blauwe pijl, waarbij we ook de afwijking ($$\Delta$$) hebben aangegeven. In het bovenste spectrum is de tweede spectraallijn uit het referentiespectrum door een meetfout als het ware verdubbeld. In het onderste spectrum duikt op golflengte 524.8 nm een extra spectraallijn op.

Hierboven tonen we opnieuw het referentiespectrum van waterstof (midden) waarop vier spectraallijnen te zien zijn. Boven en onder het referentiespectrum staan twee emissiespectra van waterstof zoals ze gemeten werden in het laboratorium. We zien telkens lichte afwijkingen in de gemeten golflengte van de spectraallijnen (de golflengten worden aangegeven boven of onder de spectra). Alle corresponderende spectraallijnen tussen het referentiespectrum en de gemeten spectra zijn aangegeven met een blauwe pijl, waarbij we ook de afwijking ($$\Delta$$) hebben aangegeven. In het bovenste spectrum is de tweede spectraallijn uit het referentiespectrum door een meetfout als het ware verdubbeld. In het onderste spectrum duikt op golflengte 524.8 nm een extra spectraallijn op.

Opgave

We stellen het emissiespectrum van een atoom of een chemische stof voor als een tuple met reële getallen (float). Deze getallen stellen golflengten van spectraallijnen in het emissiespectrum voor, en moeten altijd in oplopende volgorde gerangschikt zijn.

Als we de referentiespectra van een reeks atomen opslaan in een bestand, dan doen we dat door op elke regel de symbolische naam van het atoom te zetten, gevolgd door een tab en de golflengten van de spectraallijnen in het emissiespectrum van dat atoom. De golflengten van de spectraallijnen worden van elkaar gescheiden door komma's (,). Hierbij moeten de golflengten niet noodzakelijk in oplopende volgorde gerangschikt zijn. Bij wijze van voorbeeld tonen we hieronder de inhoud van het bestand spectra.txt1.

H	486.135,434.0472,656.279,410.1734
He	501.56783,667.8151,587.5621,471.31457,492.19313,504.7738,447.14802,438.79296,402.61914,412.08154
Li	610.354,670.791,413.259,610.365,670.776
Hg	404.6565,407.7837,434.74945,435.8335,535.4034,546.075,567.581,576.961,579.067,580.3782,585.9254,671.634,690.746

Gevraagd wordt:

Voorbeeld

Bij onderstaande voorbeeldsessie gaan we ervan uit dat het tekstbestand spectra.txt2 zich in de huidige directory bevindt.

>>> referentiespectrum = referentiespectra('spectra.txt3')
>>> referentiespectrum['H'] 
(410.1734, 434.0472, 486.135, 656.279)
>>> referentiespectrum['Li'] 
(413.259, 610.354, 610.365, 670.776, 670.791)

>>> spectrum1 = (410.1055, 434.1126, 434.1427, 486.3071, 656.224)
>>> referentielijnen(spectrum1, referentiespectrum['H'])
3
>>> spectrum2 = (410.1875, 434.0906, 486.2315, 524.7571, 656.2779)
>>> referentielijnen(spectrum2, referentiespectrum['H'], eps=0.1)
4
>>> referentielijnen(spectrum2, referentiespectrum['H'], eps=0.025)
2

>>> spectrum = (402.5579, 410.1914, 413.162, 434.1243, 486.0598, 504.7387, 610.157, 610.562, 656.354, 670.578, 670.991)
>>> decompositie(spectrum, referentiespectrum)
['H']
>>> decompositie(spectrum, referentiespectrum, eps=0.2)
['H', 'Li']
>>> decompositie(spectrum, referentiespectrum, minimum=2)
['H', 'He']
>>> decompositie(spectrum, referentiespectrum, eps=0.2, minimum=2)
['H', 'He', 'Li']