Mathematik für Biologiestudierende¶

Wintersemester 2023/24

  1. Oktober 2023

© 2023 Prof. Dr. Rüdiger W. Braun

Exponentialfunktion und Logarithmus¶

$$ \exp(\ln(y)) = y \quad\text{und}\quad \ln(\exp(x)) = x $$

$$ a^x = \exp(x \cdot \ln(a)) $$

Wachstums- und Abklingprozesse¶

  • Bei einem exponentiellen Wachstumsprozess sind die prozentualen ZuwƤchse pro (Zeit-)Einheit konstant.
  • Bei einem exponentiellen Abklingprozess sind die prozentualen Verluste pro (Zeit-)Einheit konstant.
  • Beispiel: Eine Bakterienkonzentration nehme pro Stunde um 15% ab. Man startet mit 10000 Bakterien pro $mm^2$:
Zeit [h] 0 1 2 3 4 5 6 7
Konzentration [$mm^{-2}$] 10000 8500 7225 6141 5220 4437 3771 3206
  • Abklingprozesse besitzen eine Halbwertszeit. Das ist derjenige Zeitraum, in dem sich die verbleibende Menge jeweils halbiert
  • Wachstumsprozesse besitzen eine Verdoppelungszeit. Das ist derjenige Zeitraum, in dem sich die Menge jeweils verdoppelt
  • Zur Bestimmung der Halbwerts- und Verdoppelungszeiten benƶtigt man den Logarithmus

Beispiel zur Halbwertszeit¶

  • Abklingprozess $$ k(x) = 10000 \cdot e^{-A \cdot x} $$
  • $ k(0) = 10000 $
  • nach einer Stunde um 15% geschrumpft: $ k(1) = 8500 $
  • Andererseits $ k(1) = 10000 e^{-A} $, also $$ 8500 = 10000 e^{-A} $$
  • Dividiere durch 10000 $$ 0.85 = e^{-A} $$
  • Logarithmiere (beachte $ \ln(e^y) = y $) $$ \ln(0.85) = -A $$

Bakterienkonzentration, Fortsetzung¶

  • $ \ln(0.85) = -A $
  • Also $ A = -\ln(0.85) = 0.1625 $
  • Die Konzentration folgt also der Formel $ k(x) = 10000 e^{-0.1625\cdot x} $
  • Die Halbwertszeit ist derjenige Wert $ x_{\text{hw}} $ mit $ k(x_{hw}) = 5000 $
  • Lƶse die Gleichung $$ e^{-0.1625\cdot x_{\text{hw}}} = 0.5 $$
  • Das geschieht wieder durch Logarithmieren $$ -0.1625 \cdot x_{\text{hw}} = \ln(0.5) = -0.6931 $$
  • Also $$ x_{\text{hw}} = \frac{-0.6931}{-0.1625} = 4.266 $$
  • Alle $ 4.266 $ Stunden halbiert sich die Konzentration.

Verdopplungszeit¶

  • Beispiel: Eine Seerose verfünffacht ihre FlƤche in einer Woche. Was ist ihre Verdopplungszeit?
  • Wachstumsprozess ($x$ in Tagen) $$ k(x) = e^{A \cdot x} $$
  • Wir haben den Anfangswert auf 1 normiert, weil es auf die absolute Größe nicht ankommt
  • Bestimme zuerst $A$ $$ k(7) = 5 = e^{A\cdot7} $$
  • Logarithmiere $$ \ln(5) = A \cdot 7 $$
  • Also $ A = \frac{\ln(5)}7 = 0.2299 $
  • Die FlƤche folgt also der Formel $$ k(x) = e^{0.2299\cdot x} $$

Seerose, Fortsetzung¶

  • FlƤche $ k(x) = e^{0.2299\cdot x} $
  • Die Verdopplungszeit ist derjenige Wert $ x_{\text{d}} $ mit $ k(x_{d}) = 2 $
  • Lƶse die Gleichung $$ e^{0.2299\cdot x_{\text{d}}} = 2 $$
  • Das geschieht wieder durch Logarithmieren $$ 0.2299 \cdot x_{\text{d}} = \ln(2) = 0.6931 $$
  • Also $$ x_{\text{d}} = \frac{0.6931}{0.2299} = 3.015 $$
  • Alle $ 3 $ Tage verdoppelt sich die FlƤche

Absorption¶

Koralle in blaustichigem Wasser

Photo Credit: Jerry Reid, U.S. Fish and Wildlife Service

Halbwertstiefe von blauem Licht¶

  • In 140m Tiefe nimmt die IntensitƤt von blauem Licht auf 1% ab.
  • Bestimme $A$ für die IntensitƤtsfunktion $ k(x) = e^{-A\cdot x} $
  • Gleichung $$ e^{-A\cdot 140} = 0.01 $$
  • Logarithmieren $$ -A \cdot 140 = \ln(0.01) = -4.605 $$
  • Also $$ A = \frac{4.605}{140} = 0.03289 $$

blaues Licht, Fortsetzung¶

  • Die IntensitƤtsfunktion für blaues Licht ist $ e^{-0.03289\cdot x} $, wenn $ x $ die Wassertiefe bezeichnet.
  • Gleichung für die Halbwertstiefe $ x_{\text{hw}} $ $$ e^{-0.03289\cdot x_{\text{hw}}} = 0.5 $$
  • Also $$ x_{\text{hw}} = - \frac{\ln(0.5)}{0.03289} = 21.07 $$
  • Die Halbwertstiefe für blaues Licht betrƤgt $21m$.
  • Taucht man $21m$ tiefer, halbiert sich die IntensitƤt des blauen Lichts

Erklärung des Blaustichs¶

  • Die Halbwertstiefe von rotem Licht betrƤgt $2m$, die von grünem Licht ungefƤhr $6m$
  • In $24m$ Tiefe hat sich die IntensitƤt des roten Lichts schon 12mal halbiert, die IntensitƤt ist also nur ein 4000-tel der IntensitƤt an der OberflƤche.
  • Dagegen betrƤgt die IntensitƤt des blauen Lichts in $24m$ Tiefe ungefƤhr 50%

Wasserfarbe in Abhängigkeit von der Tiefe in Metern¶

InĀ [1]:
%run wasser.py
No description has been provided for this image

Statistik mit Python¶

Installationshinweise auf https://www.math.uni-duesseldorf.de/~internet/bio2324/software.html

InĀ [2]:
123456 * 987654
Out[2]:
121931812224
InĀ [3]:
88/12
Out[3]:
7.333333333333333
  • Addition +
  • Subtraktion -
  • Multiplikation *
  • Division /
  • Potenz **
InĀ [4]:
2**10
Out[4]:
1024
InĀ [5]:
import numpy as np
  • Es gibt mindestens fünf Implementierungen von $exp$ in Python
  • Daher müssen die benƶtigten Bibiotheken explizit geladen werden
InĀ [6]:
np.exp(2)
Out[6]:
7.38905609893065

Der Logarithmus wird aufgerufen als

InĀ [7]:
np.log(7.389)
Out[7]:
1.9999924078065106

Im Notebook

  • grüner Randbalken: Editiermodus
  • blauer Randbalken: Kommandomodus

nur im Editiermodus ist der Zelleninhalt verƤnderlich

Im Kommandomodus kann die Art der Zelle geƤndert werden

  • Markdown: Text
  • Code: Programmcode

jeweils Ausführung durch <Umschalt>-<Eingabe> oder "$\blacktriangleright$ Run" aus der Werkzeugleiste

Plots¶

Wir schauen uns die Daten aus dem Beispiel "Bakterien" an

InĀ [8]:
zeit = np.arange(8)
InĀ [9]:
zeit
Out[9]:
array([0, 1, 2, 3, 4, 5, 6, 7])
InĀ [10]:
konzentration = np.array([10000, 8500,  7225, 6141, 5220, 4437, 3771, 3206])
konzentration
Out[10]:
array([10000,  8500,  7225,  6141,  5220,  4437,  3771,  3206])
  • np.array([ , , , ]) Liste von Zahlen
  • np.arange(n) Spezieller array von 0 bis n-1 (für n konkrete Zahl einsetzen)

Python beginnt ZƤhlungen bei 0

InĀ [11]:
import seaborn as sns
InĀ [12]:
sns.scatterplot(x=zeit, y=konzentration)
Out[12]:
<Axes: >
No description has been provided for this image

Wir wollen die Achsen beschriften

InĀ [13]:
ax = sns.scatterplot(x=zeit, y=konzentration)
No description has been provided for this image
InĀ [14]:
ax.set_xlabel("Zeit")
ax.set_ylabel("Konzentration")
Out[14]:
Text(4.444444444444452, 0.5, 'Konzentration')

Die Grafik muss nun explizit aufgerufen werden

InĀ [15]:
ax.figure
Out[15]:
No description has been provided for this image

Es wird immer das Objekt aus der letzten Zeile einer Zelle dargestellt

Jetzt malen wir noch die Kurve $10000 \cdot e^{-0.1625\cdot x}$ dazu.

InĀ [16]:
zeitstrahl = np.linspace(0, 7)
#  50 Zeitpunkte zwischen 0 und 7
zeitstrahl
Out[16]:
array([0.        , 0.14285714, 0.28571429, 0.42857143, 0.57142857,
       0.71428571, 0.85714286, 1.        , 1.14285714, 1.28571429,
       1.42857143, 1.57142857, 1.71428571, 1.85714286, 2.        ,
       2.14285714, 2.28571429, 2.42857143, 2.57142857, 2.71428571,
       2.85714286, 3.        , 3.14285714, 3.28571429, 3.42857143,
       3.57142857, 3.71428571, 3.85714286, 4.        , 4.14285714,
       4.28571429, 4.42857143, 4.57142857, 4.71428571, 4.85714286,
       5.        , 5.14285714, 5.28571429, 5.42857143, 5.57142857,
       5.71428571, 5.85714286, 6.        , 6.14285714, 6.28571429,
       6.42857143, 6.57142857, 6.71428571, 6.85714286, 7.        ])
InĀ [17]:
werte = 10000 * np.exp(-0.1625*zeitstrahl)
werte
Out[17]:
array([10000.        ,  9770.53092819,  9546.32746188,  9327.2687717 ,
        9113.23680095,  8904.11620196,  8699.79427395,  8500.16090225,
        8305.10849901,  8114.53194516,  7928.3285338 ,  7746.39791484,
        7568.6420409 ,  7394.96511451,  7225.27353642,  7059.47585523,
        6897.48271803,  6739.20682232,  6584.5628689 ,  6433.46751592,
        6285.83933399,  6141.59876224,  6000.6680655 ,  5862.97129238,
        5728.43423433,  5596.98438567,  5468.55090448,  5343.06457446,
        5220.45776761,  5100.66440778,  4983.61993505,  4869.26127098,
        4757.52678456,  4648.35625902,  4541.6908594 ,  4437.47310081,
        4335.64681745,  4236.15713236,  4138.95042784,  4043.97431655,
        3951.17761327,  3860.51030732,  3771.92353563,  3685.36955637,
        3600.80172323,  3518.17446031,  3437.44323753,  3358.56454662,
        3281.49587771,  3206.19569639])
InĀ [18]:
sns.lineplot(x=zeitstrahl, y=werte)
Out[18]:
<Axes: >
No description has been provided for this image

Das malen wir jetzt in die andere Achse hinein

InĀ [19]:
ax2 = sns.lineplot(x=zeitstrahl, y=werte, ax=ax)
InĀ [20]:
ax2.figure
Out[20]:
No description has been provided for this image
  • sns.scatterplot einzelne Punkte
  • sns.lineplot durchgezogene Linie

Es gibt eine Unzahl von statistischen Zeichenfunktionen. Die wichtigsten werde ich nach und nach vorstellen.

Jetzt auch noch eine Grafik zu den Absorbationstiefen¶

InĀ [21]:
tiefe = np.linspace(0, 24)
blau = np.exp(-0.03289*tiefe)
blau
Out[21]:
array([1.        , 0.98401967, 0.96829472, 0.95282105, 0.93759466,
       0.9226116 , 0.90786796, 0.89335994, 0.87908375, 0.86503571,
       0.85121216, 0.83760951, 0.82422424, 0.81105287, 0.79809198,
       0.78533821, 0.77278825, 0.76043884, 0.74828678, 0.73632891,
       0.72456214, 0.7129834 , 0.70158969, 0.69037806, 0.67934559,
       0.66848943, 0.65780675, 0.64729479, 0.6369508 , 0.62677212,
       0.6167561 , 0.60690014, 0.59720168, 0.5876582 , 0.57826723,
       0.56902633, 0.5599331 , 0.55098519, 0.54218027, 0.53351605,
       0.52499029, 0.51660078, 0.50834533, 0.5002218 , 0.4922281 ,
       0.48436213, 0.47662187, 0.46900529, 0.46151044, 0.45413535])
InĀ [22]:
gruen = np.exp(-.1151*tiefe)
rot = np.exp(-.3466*tiefe)
InĀ [23]:
sns.lineplot(x=tiefe, y=blau, color='blue')
sns.lineplot(x=tiefe, y=gruen, color='green')
ax = sns.lineplot(x=tiefe, y=rot, color='red')
ax.set_xlabel('Tiefe [m]')
ax.set_ylabel('Anteil')
Out[23]:
Text(0, 0.5, 'Anteil')
No description has been provided for this image
InĀ [24]:
ax.grid(True)
ax.figure
Out[24]:
No description has been provided for this image