i

Die Listenfunktionen filter und fold

Wetterdaten des Deutschen Wetterdienst analysieren

Schaut man sich die Diskussion über den Klimawandel an, so fallen häufig Aussagen wie: "Früher war es auch schon warm!" oder "Gerade ist es doch kalt draußen - wo ist denn der Klimawandel?". Diese Aussagen lassen sich am besten anhand von Klimadaten einordnen.

Wir schauen uns speziell die Temperaturdaten des Deutschen Wetterdienstes an. Dieser ermittelt seit 1881 genügend flächendeckende Temperaturmessungen, um für jedes Jahr eine Durchschnittstemperatur für Deutschland zu erstellen.

Die Daten zur jährlichen Durchschnittstemperatur sind von 1881 bis 2024 geordnet, die Folgenden:

(define temperaturen
  (list 7.3 8.3 7.9 8.6 7.7 8 7 6.9 7.4 7.3 7.4 7.5 7.9 8.1 7.3 7.6 7.9 8.5 8.1 8.4 7.6 7.2 8.4 8.4
        8 8.3 7.8 7.5 7.4 8.4 9 7.9 8.5 8.5 7.9 8.4 7.5 8.5 7.3 8.6 9 7.2 8 7.5 8.3 8.7 8 8.3 7.4 8.8
        7.6 8.3 7.6 9.5 8.4 8.4 8.6 8.6 8.3 6.6 7.2 7.3 8.9 8.3 9 8.4 8.5 9 9.1 8.6 8.7 7.9 8.9 7.7
        7.5 6.8 8.6 8.2 9 8.4 8.9 7.1 7.1 8.1 7.5 8.5 8.9 8.1 7.8 7.7 8.4 7.8 8.2 8.8 8.9 8.5 8.7 7.8
        7.7 7.6 8.2 8.9 9 8 7.4 7.9 7.4 9.1 9.5 9.5 8.3 9.4 8.5 9.7 8.9 7.2 8.9 9.1 9.5 9.9 9 9.6 9.4
        8.9 9 9.5 9.9 9.5 9.2 7.8 9.6 9.1 8.7 10.3 9.9 9.5 9.6 10.5 10.3 10.4 9.2 10.5 10.6 10.9))
Dabei ergibt sich über alle Jahre hinweg eine Durchschnittstemperatur von 8,42 °C.

Aufgabe 1: Filtern auf Listen

Bestehende Datei - listenFunktionen.rkt

(a) Kopiere die obere Definition in deine Racket-Datei. Führe anschließend die folgenden Ausdrücke aus:

> (filter natural? temperaturen)
> (filter negative? temperaturen)
> (filter positive? temperaturen)
Erkläre, was die Funktion filter leistet.

(b) Finde alle Jahresdurchschnittstemperaturen, die kälter als 7 °C waren.

(c) Finde alle Jahresdurchschnittstemperaturen, die wärmer als 10 °C waren.

(d) Finde heraus, wie viele Jahre wärmer waren als der Gesamtdurchschnitt von 8,42 °C.
Tipp: (length temperaturen) liefert dir die Anzahl aller Temperaturwerte in der Liste.


Aufgabe 2: Filtern auf Listen von Listen

Bestehende Datei - listenFunktionen.rkt
Bisher können wir nur Aussagen zu den Temperaturwerten treffen. Informationen zu den zugehörigen Jahren besitzen wir allerdings noch nicht. Die Liste der aufgezeichneten Jahre ist die folgende:
(define jahre
  (list 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899
        1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918
        1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937
        1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956
        1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975
        1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994
        1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013
        2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024))
Um in unsere Analysen auch Jahresdaten miteinzubeziehen, müssen wir die Jahresdaten mit den Temperaturdaten zusammenführen.

(a) Schreibe einen Ausdruck, der eine Liste produziert, die als Element je eine Liste mit zwei Elementen besitzt (jahr temperatur) und definiere diese unter dem Namen jahr-temp.

(b) Lasse dir alle Jahres-Temperatur-Elemente ausgeben, bei denen die Jahres-Durchschnittstemperaturen kälter als 7 °C waren.

(c) Lasse dir alle Jahres-Temperatur-Elemente ausgeben, bei denen die Jahres-Durchschnittstemperaturen wärmer als 10 °C waren.

(d) Finde heraus, welche Jahre wärmer waren als der Gesamtdurchschnitt von 8,42 °C. Die produzierte Liste soll dabei nur noch Jahreszahlen enthalten.


Aufgabe 3: Die Listenfunktion fold

Bestehende Datei - listenFunktionen.rkt

Wenn wir herausfinden möchten, wie sich das Klima über bestimmte Zeiträume entwickelt hat, ist es sinnvoll, bestimmte Zeiträume genauer zu analysieren. Dafür könnten wir beispielsweise Mittelwerte für gezielte Zeiträume betrachten. Der Mittelwert über alle Temperaturdaten (8,42 °C) lässt sich wie folgt berechnen:

(/ (fold 0 + temperaturen) (length temperaturen))

(a) Betrachte den Ausdruck zur Berechnung des Mittelwerts. Anhand deines Wissens zum Berechnen des Mittelwerts: Welcher Wert wird von dem Ausdruck (fold 0 + temperaturen) produziert?

(b) Finde heraus, was die Funktion fold leistet. Schreibe dazu verschiedene fold-Ausdrücke mit den übergebenen Funktionen +, *, max und eigenen Variationen im ersten und dritten Operanden.

(c) Betrachte die unteren zwei Ausdrücke. Welches Ergebnis erwartest du? Überprüfe deine Annahme anschließend.

> (fold 3 / (list 2 4 6))
> (fold 4 - (list 3 4 5))

Möglicherweise ist das Ergebnis nicht das, das du erwartet hast. Verändere und vereinfache die Ausdrücke und finde heraus, wie der Wert des ersten Operanden und die Elemente der Liste durch die übergebene Funktion miteinander verkettet werden.
Tipp: Die Funktion string-append könnte hier nützlich sein.


Aufgabe 4: Mittelwerte für bestimmte Zeiträume berechnen

Bestehende Datei - listenFunktionen.rkt
Da wir nun wissen, wie wir mit fold Mittelwerte bestimmen können, wollen wir dies auf bestimmte Zeiträume einschränken. Wir nutzen hierfür wieder unsere Definition jahr-temp

(a) Ermittle den Temperaturmittelwert für die Zeiträume 1925-2024, 1975-2024 und 2000-2024.

(b) Finde heraus, welche Jahre wärmer waren als der Gesamtdurchschnitt des Zeitraums 1925-2024. Die produzierte Liste soll dabei nur noch Jahreszahlen enthalten.

(c) Finde heraus, welche Jahre wärmer waren als der Gesamtdurchschnitt des Zeitraums 1975-2024. Die produzierte Liste soll dabei nur noch Jahreszahlen enthalten.

(d) Finde heraus, welche Jahre wärmer waren als der Gesamtdurchschnitt des Zeitraums 2000-2024. Die produzierte Liste soll dabei nur noch Jahreszahlen enthalten.

Suche

v
100.137.3.4.1 Die Listenfunktionen filter und fold
Kopieren durch Anklicken

Rückmeldung geben