Mathematik für Biologiestudierende¶

Wintersemester 2023/24

10.01.2024

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

Differentialrechnung¶

Ableitung als Grenzwert der Sekantensteigung¶

Funktion und Sekante

$$ \lim_{h\to0} \frac{f(x+h)-f(x)}h $$

Beispiel¶

$$ f(x) = x^2 \cdot \exp(-x) $$

$$ f'(x) = \left( 2x - x^2 \right) \cdot \exp(-x) $$

Abbildung für das Beispiel¶

In [1]:
import numpy as np
import pandas as pd
import seaborn as sns
sns.set_theme()


df = pd.DataFrame()
x = np.linspace(0, 10, 1000)
df['x'] = x
df['y'] = x**2 * np.exp(-x)
df['ys'] = (2*x - x**2) * np.exp(-x)
In [2]:
ax = sns.lineplot(data=df, x='x', y='y')
No description has been provided for this image
In [3]:
ax = sns.lineplot(data=df, x='x', y='ys')
No description has been provided for this image

Qualitatives Verhalten¶

  • wenn $f'(x)>0$, dann wächst die Funktion
  • wenn $f'(x)<0$, dann fällt sie

Das bedeutet: Für einen Hoch- oder Tiefpunkt $x_0$ von $f$ gilt $f'(x_0)=0$.

Höhere Ableitungen¶

  • Die Ableitung der Ableitung nennt man zweite Ableitung und schreibt $f''(x)$ dafür
  • Zweite Ableitungen treten in der Physik (als Beschleunigung) und überhaupt bei dynamischen Systemen auf
  • "Die Infaltion hat sich abgeschwächt" bedeutet: "Die zweite Ableitung der Konsumentenpreise ist negativ"

Beispiel¶

$$ f(x) = x^2 \cdot \exp(-x) $$

$$ f'(x) = \left( 2x - x^2 \right) \cdot \exp(-x) $$

\begin{align*} f''(x) &= \left( 2 - 2x \right) \cdot \exp(-x) + \left( 2x - x^2 \right) (-x) \exp(-x) && \text{Produktregel} \\ &= \left( 2 - 4x + x^2 \right) \cdot \exp(-x) \end{align*}

  • Wir wollen $f$, $f'$ und $f''$ in ein Bild zeichnen, und zwar mit seaborn
  • Im Gegensatz zu df von oben benötigen wir dazu ein DataFrame in Langform
  • Das bedeutet, dass die Werte $f(x)$, $f'(x)$ und $f''(x)$ alle in derselben Spalte stehen und durch einen kategoriellen Wert in einer weiteren Spalte unterschieden werden
  • Einige der statistische Auswertefunktionen erwarten die Daten in Langform
In [4]:
d0 = pd.DataFrame()
d0['x'] = x
d0['y'] = x**2 * np.exp(-x)
d0['Ableitung'] = "nullte"
d1 = pd.DataFrame()
d1['x'] = x
d1['y'] = (2*x - x**2) * np.exp(-x)
d1['Ableitung'] = "erste"
df = pd.concat([d0, d1])
d2 = pd.DataFrame()
d2['x'] = x
d2['y'] = (2-4*x+x**2) * np.exp(-x)
d2['Ableitung'] = "zweite"
df = pd.concat([d0, d1, d2], ignore_index=True)
In [5]:
df[990:1010]
Out[5]:
x y Ableitung
990 9.90991 0.004879 nullte
991 9.91992 0.004840 nullte
992 9.92993 0.004802 nullte
993 9.93994 0.004763 nullte
994 9.94995 0.004725 nullte
995 9.95996 0.004688 nullte
996 9.96997 0.004650 nullte
997 9.97998 0.004613 nullte
998 9.98999 0.004576 nullte
999 10.00000 0.004540 nullte
1000 0.00000 0.000000 erste
1001 0.01001 0.019721 erste
1002 0.02002 0.038854 erste
1003 0.03003 0.057408 erste
1004 0.04004 0.075397 erste
1005 0.05005 0.092831 erste
1006 0.06006 0.109721 erste
1007 0.07007 0.126079 erste
1008 0.08008 0.141915 erste
1009 0.09009 0.157240 erste
In [6]:
import warnings
warnings.filterwarnings('ignore', message='The figure layout has changed')
sns.relplot(data=df, x='x', y='y', hue='Ableitung', kind='line');
No description has been provided for this image
In [7]:
sns.relplot(data=df, x='x', y='y', col='Ableitung', kind='line');
No description has been provided for this image
  • sns.lineplot: Eine einzelne Kurve
  • sns.relplot(…, kind='line'): mehrere Kurven
    • je nachdem, ob hue oder col zur Unterscheidung benutzt wird, erhält man einen oder mehrere Graphen
  • sns.scatterplot: Eine einzelne Punktwolke
  • sns.relplot(…, kind='scatter'): mehrere Punktwolken

Beispiel: Konzentrationen in einer Zelle¶

  • Die Konzentration eines bestimmten Proteins in einer Zelle zum Anfangszeitpunkt $t=0$ beträgt $0\mu g/m\ell$
  • Zuerst steigt sie schnell mit $0.8\frac{\mu g}{m\ell\cdot s}$
  • Nach 2 Sekunden steigt die Konzentration nicht mehr, das Protein wird von da an exponentiell abgebaut

Modell¶

$$ f(t) = A \cdot t \cdot \exp(-b\cdot t) $$

\begin{align*} f'(t) &= A \cdot \exp(-b \cdot t) + A \cdot t \cdot(-b) \cdot \exp(-b \cdot t) \\ &= (A - Abt) \cdot \exp(-b \cdot t) \end{align*}

Wir haben zwei Gleichungen

  • f'(0) = 0.8
  • f'(2) = 0

Einsetzen

  • $f'(0) = A$, also $A=0.8$
  • $f'(2) = 0$, also $ (A - 2Ab) \cdot \exp(-2b) = 0 $

  • $\exp(-2b)$ ist nicht Null, also muss $ A -2b = 0$ gelten, d.h. $b=0.5$

Unser Modell ist also

$$ f(t) = 0.8t \cdot \exp(-0.5t) $$

In [8]:
t = np.linspace(0, 8)
y = 0.8*t * np.exp(-0.5*t)
ax = sns.lineplot(x=t, y=y)
No description has been provided for this image
  • Maximum bei $t=2$, das ist eine der Ausgangsgleichungen
  • Wert dort
In [9]:
0.8 * 2 * np.exp(-0.5*2)
Out[9]:
0.5886071058743079

Integralrechnung¶

Flächeninhalt¶

  • $f(x)$ eine Funktion, die keine negativen Werte annimmt
  • $a$ und $b$ Intervallgrenzen
  • den Inhalt der Fläche unter $f(x)$ zwischen $a$ und $b$ bezeichnet man mit $$ \int_a^b f(x) dx $$
  • $ \int_a^b f(x) dx $ ist das Integral von $f(x)$ in den Grenzen von $a$ bis $b$

Skizze¶

Integral als Fläche

  • Funktion $f(x)$ darf nun auch negative Werte annehmen
  • Dann ist $$ \int_a^b f(x) dx $$ die Differenz zwischen dem Flächeninhalt oberhalb und dem Flächeninhalt unterhalb der $x$-Achse
  • $\int_a^b f(x) dx$ ist also negativ, wenn die Fläche unterhalb der $x$-Achse größer ist als die Fläche oberhalb ist
  • Das Zeichen $\int_a^b$ ist das "bestimmte Integral"

Skizze¶

Integral als Fläche

Der Inhalt der grünen Fläche abzüglich des Inhalts der roten Fläche ist $\int_a^b f(x) dx$

Stammfunktion¶

Falls $$ F'(x) = f(x) $$

  • dann ist $f$ die Ableitung von $F$
  • und $F$ ist eine Stammfunktion von $f$
  • Man schreibt $$ \int f(x) dx = F(x) $$
  • Das Zeichen $ \int $ ist das "unbestimmte Integral"
  • Stammfunktionen sind nicht eindeutig
  • Wenn $F(x)$ eine Stammfunktion von $f(x)$ ist, dann ist auch $F(x) + C$ eine Stammfunktion von $f(x)$, wenn $C$ eine Konstante ist
  • Das liegt daran, dass $C' = 0$

Beispiel¶

  • $\frac{x^2}2$ ist eine Stammfunktion von $x$, denn $(x^2)' = 2x$
  • Wir schreiben $$ \int x\, dx = \frac{x^2}2 $$
  • In Lehrbüchern findet man auch die Schreibweise $$ \int x\, dx = \frac{x^2}2 + C $$ um anzudeuten, dass die Stammfunktion nicht eindeutig ist

Hauptsatz der Differential- und Integralrechnung¶

Wenn $F(x)$ eine Stammfunktion von $f(x)$ ist, dann $$ \int_a^b f(x) dx = F(b) - F(a) $$

Man schreibt $$ \int_a^b f(x) = F(x) \Bigr|_a^b $$

Beispiel $$ \int_0^5 x\, dx = \frac12 x^2 \Bigr|_0^5 = \frac12 5^2 - \frac12 0^2 = \frac{25}2 = 12.5 $$

Skizze¶

Integral von 0 bis 5 über x

Das Dreieck füllt das Quadrat mit der Seitenlänge 5 zur Hälfte aus. Sein Flächeninhalt ist also tatsächlich gleich 12.5

Eigenschaften des Integrals¶

  • Wenn $a<b<c$, dann $$ \int_a^b f(x) dx + \int_b^c f(x) dx = \int_a^c f(x) dx $$
  • Speziell $$ \int_a^a f(x) dx = 0 $$

Kontinuierliche Zufallsvariable¶

Eine Zufallsvariable $X$ heißt kontinuierlich mit Dichte $f$, wenn $$ P(a \le X < b) = \int_a^b f(x) dx $$

Man bezeichnet

  • $f$ als Dichte und
  • $F(x) = \int_{-\infty}^x f(x) dx$ als Verteilungsfunktion von $X$
  • Wenn $f$ die Dichte und $F$ die Verteilungsfunktion ist, dann ist $F$ eine Stammfunktion der Dichte
  • also $$ P(a\le X<b) = \int_a^b f(x) dx = F(b) - F(a) $$

Wegen $ \int_a^a f(x) dx = 0 $ gilt dann auch $$ P(a\le X \le b) = P(a<X<b) = P(a<X\le b) = F(b) - F(a) $$

Forderungen an die Dichte¶

Wenn $f$ die Dichte einer Zufallsvariablen sein kann, müssen Bedingungen erfüllt sein

$$ f(x) \ge 0 \text{ für alle $x$} $$ $$ \int_{-\infty}^\infty f(x) dx = 1 $$

Standard-Normalverteilung¶

  • Die Dichte der Standardnormalverteilung ist die Gaußsche Glockenkurve $$ \varphi(x) = \frac1{\sqrt{2\pi}} \exp\!\left( -\frac{x^2}2 \right) $$
  • Die Verteilungsfunktion ist $$ \Phi(u) = \frac1{\sqrt{2\pi}} \int_{-\infty}^u \exp\!\left( -\frac{x^2}2 \right) dx $$
  • Eine explizitere Formel gibt es nicht
In [10]:
from scipy import stats
Phi = stats.norm()   # Normalverteilung
In [11]:
d1 = pd.DataFrame()
x = np.linspace(-4, 4)
d1['x'] = x
d1['y'] = np.exp(-0.5*x**2) / np.sqrt(2*np.pi)
d1['Name'] = "Dichte"
d2 = pd.DataFrame()
d2['x'] = x
d2['y'] = Phi.cdf(x)
d2['Name'] = "Verteilungsfunktion"
df = pd.concat([d1, d2], ignore_index=True)

Standard-Normalverteilung¶

In [12]:
sns.relplot(data=df, x='x', y='y', hue='Name', kind='line');
No description has been provided for this image

Eigenschaften der Verteilungsfunktion der Standard-Normalverteilung¶

  • $\Phi(x) > 0$ für alle $x$
  • $\lim_{x\to-\infty} \Phi(x) = 0$
  • $\lim_{x\to\infty} \Phi(x) = 1$
  • $\Phi(-x)=1-\Phi(x)$ für alle $x$ (Symmetrie an $x=0$)

Beispiel¶

  • Die mittlere Halmlänge eines bestimmten Grases beträgt 10cm
  • Die Zufallsvariable $X$ misst den Unterschied eines einzelnen Grashalms zur mittleren Halmlänge
  • Unser Modell sagt, dass $X$ standard-normalverteilt ist
  • Das bedeutet: Die Halmlänge in cm wird modelliert als $10+X$

Welcher Anteil der Halme hat eine Länge zwischen 9cm und 11cm?

Antwort $$ P(-1\le X<1) = \int_{-1}^1 \varphi(x) dx = \Phi(1) - \Phi(-1) $$

In [13]:
Phi = stats.norm()
Phi.cdf(1) - Phi.cdf(-1)
Out[13]:
0.6826894921370859

Welcher Anteil der Halme hat eine Länge von mindestens 10cm?

Antwort $$ P(0\le X) = \int_{0}^\infty \phi(x) dx = 1 - \Phi(0) $$

In [14]:
1 - Phi.cdf(0)
Out[14]:
0.5

Welcher Anteil der Halme hat eine Länge von höchstens 8.2cm?

Antwort $$ P(X\le-1.8) = \int_{-\infty}^{-1.8} \phi(x) dx = \Phi(-1.8) $$

Hinweis: $10-8.2=-1.8$

In [15]:
Phi.cdf(-1.8)
Out[15]:
0.03593031911292579