Een ijskern is een cilindervormig monster afkomstig van een ijskap, meestal uit de poolgebieden of van een gletsjer. Aangezien ijskappen zich vormen door de opeenstapeling van jaarlijkse sneeuwlagen, zijn ze opgebouwd uit ijs van verschillende jaren waarbij de onderste lagen ouder zijn dan de bovenste. Door analyse van de eigenschappen van het ijs en de gassamenstelling van gekristalliseerde luchtbelletjes die in het ijs ingesloten zitten, kan een klimatologische reconstructie gemaakt worden van de periode waarin de ijskern gevormd werd. Op basis van de concentraties en de isotopen van koolstofmonoxide en methaan kan men bijvoorbeeld de evolutie van de lokale temperatuur en de atmosferische samenstelling in kaart brengen.

ijskern
Segment van 19 cm uit de GISP 2 ijskern (diepte 1855 m) waarin de structuur van jaarlijkse lagen duidelijk zichtbaar gemaakt werd door belichting onderaan met een glasvezelbron. Het segment bevat lagen die tijdens 11 opeenvolgende jaren gevormd werden, waarbij telkens lagen gevormd tijdens de zomer (aangegeven met pijlen) ingeklemd zitten tussen donkere lagen die tijdens de winter gevormd werden.
ijskap Vostok
Gereconstrueerde temperatuur (blauw), concentratie koolstofdioxide (CO2, groen) en hoeveelheid stofdeeltjes (rood) in de ijskap van Vostok (Antarctica) over een periode van de laatste 420.000 jaar.

Bovenstaande figuur toont de evolutie van de temperatuur (blauw), de concentratie koolstofdioxide (groen) en de hoeveelheid stofdeeltjes die zich in het ijs hebben vastgezet (rood) in de ijskap van Vostok (Antarctica) over een periode van de laatste 420.000 jaar. Hierin kunnen met het blote oog reeds een aantal klimatologische cycli herkend worden. Het verloop van dergelijke tijdsreeksen bevat echter te veel ruis om ze rechtstreeks door een computer te laten analyseren. Deze ruis kan onderdrukt worden door toepassing van eenvoudige wiskundige technieken om de curves af te vlakken.

In de linker figuur hieronder hebben de we originele meetwaarden van de concentratie koolstofmonoxide overgenomen, en daarbij hebben we ook de opeenvolgende klimatologische cycli aangeduid. In de middelste figuur hebben we een gemiddelde afvlakking toegepast op de originele meetwaarden en de rechter figuur is het resultaat van een driehoeksafvlakking. In de laatste twee gevallen is het periodieke karakter van de curve nog duidelijker uitgesproken.

concentratie koolstofdioxide (geen afvlakking) concentratie koolstofdioxide (gemiddelde afvlakking) concentratie koolstofdioxide (driehoeksafvlakking)

Opgave

Langs opeenvolgende punten van een ijskern hebben we de concentratie van een bepaalde eigenschap (bv. de concentratie koolstofdioxide) bepaald. De waarden op deze meetpunten werden gebundeld in een lijst of een tuple. Gevraagd wordt om deze meetwaarden af te vlakken zodat ze makkelijker met de computer kunnen geanalyseerd worden. Hiervoor ga je als volgt te werk:

Voorbeeld

In onderstaande interactieve sessie hebben we de floating point getallen afgerond om de voorbeelden beknopt te houden. In de opgave wordt niet gevraagd om een dergelijke afronding uit te voeren.

>>> CO2 = [285.5, 281.4, 277.2, 280.9, 282.7]
>>> gewichten = [0.5, 1.0, 0.5]
>>> gewogenGemiddelde(CO2, gewichten)
Traceback (most recent call last):
AssertionError: reeksen moeten even lang zijn
>>> gewichten = [0.25, 0.5, 1.0, 0.5, 0.25]
>>> gewogenGemiddelde(CO2, gewichten)
280.16
>>> gewogenGemiddelde((4.0, 3.0, 7.0), (1.0, 2.0, 1.0))
4.25

>>> CO2 = [285.5, 281.4, 277.2, 280.9, 282.7, 280.9, 279.5, 279.1, 278.6, 278.2]
>>> afvlakken(CO2, gewichten)
[280.16, 280.57, 281.11, 280.8, 279.93, 279.17]
>>> afvlakkenGemiddelde(CO2)
[281.54, 280.62, 280.24, 280.62, 280.16, 279.26]
>>> afvlakkenGemiddelde(CO2, venster=4)
[281.25, 280.55, 280.425, 281.0, 280.55, 279.525, 278.85]
>>> afvlakkenDriehoek(CO2)
[280.489, 280.533, 280.933, 280.789, 279.978, 279.178]
>>> afvlakkenDriehoek(CO2, venster=4)
Traceback (most recent call last):
AssertionError: vensterbreedte moet oneven zijn
>>> afvlakkenDriehoek(CO2, venster=3)
[281.375, 279.175, 280.425, 281.8, 281.0, 279.75, 279.075, 278.625]

Bronnen