• Keine Ergebnisse gefunden

C in M ATLAB Kurzeinf ¨ und uhrung OCTAVE

Im Dokument Mathematik f ¨ur Biologie (Seite 147-160)

Im folgenden geben wir eine sehr kurze Einf¨uhrung in die Programmiersprache MATLAB1 und

OCTAVE2. Die beiden Programme sind in vielen Teilen in ihrer Benutzung sehr ¨ahnlich oder sogar identisch. MATLAB ist kommerziell erh¨altlich und bietet dem Benutzer eine riesige Palette von M¨oglichkeiten f¨ur wissenschaftliche Berechnungen. Das Angebot in OCTAVE ist beschr¨ankter, daf¨ur ist das Programm frei erh¨altlich.

Grundoperationen

OCTAVE bietet die klassischen Grundoperationen + Addition - Subtraktion

* Multiplikation / Division

^ Potenzieren octave:1> 3+2

ans = 5

octave:2> 5-2 ans = 3

octave:3> 6*4 ans = 24

1MATLABis a trademark of The MathWorksTM

2c John W. Eaton and others, siehehttp://www.gnu.org/software/octave/index.html

octave:4> 18/3 ans = 6

octave:5> 4^5 ans = 1024

octave:6> 4*(5-3)^3-4 ans = 28

Durch Anf¨ugen von;am Ende einer Eingabezeile, wird die Ausgabe unterdr¨uckt:

octave:6> 4*4;

keine Ausgabe

Variablen

Objekte (d.h., Zahlen, Vektoren, etc.) k¨onnen in OCTAVE in Form von Variablen abgespeichert werden (die beispielsweise als Buchstaben geschrieben werden), die dann in nachfolgenden Be-fehlszeilen wieder aufgerufen werden k¨onnen.

octave:1> a = 5;

octave:2> b = 2;

octave:3> a + b ans = 7

octave:4> c = a/b c = 2.5000

Vektoren und Matrizen

Eine wichtige Eigenschaft von OCTAVE ist seine F¨ahigkeit, mit Vektoren und Matrizen rech-nen zu k¨onrech-nen. Vektoren und Matrizen werden mit[...] geschrieben. Hierbei wird zwischen

“Zeilen-” und “Spaltenvektoren” unterschieden. Durch das Einf¨ugen von ; k¨onnen Zeilen ge-trennt werden.

octave:1> v = [ 1 -3 4 ] v =

1 -3 4

octave:2> w = [ 1; 5; -3 ] w =

1 5 -3

octave:3> A = [ 3 4 5 5; 3 2 -3 1 ] A =

3 4 5 5

3 2 -3 1

Auf einen einzelnen Eintrag einer Matrix kann mit Hilfe der entsprechenden Zeilen- und Spal-tennummer zugegriffen werden. Um beispielsweise den Eintrag in Zeile 2 und Spalte 3 der Ma-trixAauszugeben, schreiben wir:

octave:4> A(2,3) ans = -3

Die erste Zahl in( , )ist immer die Zeilennummer, die zweite Zahl stets die Spaltennummer.

Ganze Zeilen und Spalten k¨onnen mit dem Doppelpunkt: abgefragt werden. Beispiel erhalten wir wie folgt die dritte Spalte und die erste Zeile der MatrixA:

octave:5> A(:,3) ans =

5 -3

octave:6> A(1,:)

ans =

3 4 5 5

Auch bei Matrizen und Vektoren lassen sich die Grundoperationen + und-(Summe resp. Dif-ferenz der jeweiligen Eintr¨age von zwei Matrizen) anwenden. Wichtig ist allerdings, dass die entsprechenden Vektoren oder Matrizen das gleiche Format haben.

octave:7> B = [ 4 2 -2 1; 0 3 2 4 ] B =

4 2 -2 1

0 3 2 4

octave:8> A+B ans =

7 6 3 6

3 5 -1 5

octave:9> A-B ans =

-1 2 7 4

3 -1 -5 -3

octave:10> z = [ 3 -2 1 ] z =

3 -2 1

octave:11> v+z ans =

4 -5 5

octave:12> w+z

error: operator +: nonconformant arguments (op1 is 3x1, op2 is 1x3)

Im letzten Beispiel addieren wir einen Spalten- und einen Zeilenvektor. Da dies zwei verschie-dene Formate sind (n¨amlich3×1und1×3) und diese Rechnung deshalb nicht definiert ist, liefert

OCTAVE eine Fehlermeldung.

Die Multiplikation mit einer Zahl erfolgt mit der Operation*. Das gleiche Symbol wird f¨ur die Matrix-Vektor- oder Matrix-Matrix-Multiplikation gebraucht (unter der Voraussetzung, dass die entsprechenden Matrizen oder Vektoren das richtige Format haben).

octave:10> C = [ 3 1 -2; 0 0 1; 3 2 5; 7 -1 -2 ] C =

3 1 -2

0 0 1

3 2 5

7 -1 -2

octave:11> 2*C ans =

6 2 -4

0 0 2

6 4 10

14 -2 -4

octave:12> (-1)*C ans =

-3 -1 2 -0 -0 -1 -3 -2 -5

-7 1 2

octave:13> C*w ans =

14 -3 -2 8

octave:14> A*C ans =

59 8 13

7 -4 -21 octave:15> C*A

error: operator *: nonconformant arguments (op1 is 4x3, op2 is 2x4)

Im letzten Beispiel entsteht ein Fehler, weil die Formate der beiden Matrizen bei der Multipli-kationC*Anicht kompatibel sind.

Eintragsweise Operationen erfolgen mit den normalen Befehlen mit einem vorgeschobenen Punkt. Beispielsweise:

octave:1> v = [ 4 -6 ] v =

4 -6

octave:2> w = [ 2 1 ] w =

2 1

octave:3> v.*w ans =

8 -6

octave:4> v./w ans =

2 -6

Eigenwerte von Matrizen werden mit dem Befehleigberechnet:

octave:1> A = [ 1 -1; 2 5 ] A =

1 -1

2 5

octave:2> [V,D] = eig(A) V =

-0.86286 0.28108 0.50545 -0.95968 D =

1.58579 0.00000 0.00000 4.41421

Wir bemerken, dass eigzwei Ausgabematrizen Vund D liefert. Die Diagonaleintr¨age vonD sind die Eigenwerte vonAund die Spalten vonVsind zugeh¨orige Eigenvektoren.

Grafische Darstellung

Einfache Graphen k¨onnen mitploterzeugt werden. Betrachten wir beispielsweise die Exponen-tialfunktion

f(t) =et/2.

Zun¨achst zeichnen wir sie an den diskreten Zeitpunktent = 0,1,2, . . .10. Diese Punkte lassen sich inOCTAVEeinfach erzeugen:

octave:1> t=0:1:10

t =

0 1 2 3 4 5 6 7 8 9 10

Der Graph wird dann gezeichnet mit dem Befehl octave:2> plot(t,exp(-0.5*t),’*’)

Die Koordinatenachsen beschriften wir mit den Befehlen octave:3> xlabel(’t’)

octave:4> ylabel(’f(t)’) Das Ergebnis sieht wie folgt aus:

0 0.2 0.4 0.6 0.8 1

0 2 4 6 8 10

f(t)

t

Alternativ lassen sich die Datenpunkte auch verbinden:

octave:5> plot(t,exp(-0.5*t),’*-’) Dies ergibt:

0 0.2 0.4 0.6 0.8 1

0 2 4 6 8 10

Wir k¨onnen auch kleinere horizontale Abst¨ande w¨ahlen, z.B. mit Abstand0.1anstatt1:

octave:6> t=0:0.1:10;

octave:7> plot(t,exp(-0.5*t),’*-’)

Hier ist die Zahl zwischen den beiden Doppelpunkten der Abstand zwischen zwei aufeinan-derfolgendent-Werten. Wir erhalten:

0 0.2 0.4 0.6 0.8 1

0 2 4 6 8 10

for-Schleifen

Um einen Befehl wiederholt auszuf¨uhren, k¨onnen wir uns beispielsweise einerfor-Schleife be-dienen. Als Beispiel berechnen wir die Summes aller Zahlenkvon1bis10. Dies funktioniert wie folgt:

octave:1> s = 0;

octave:2> for k=1:10

> s = s + k;

> end;

octave:3> s s = 55 Funktionen

Neue Funktionen k¨onnen in OCTAVE mit der function-Umgebung definiert werden. Als Bei-spiel schreiben wir eine Funktion, die die Summer aller Zahlen von1bisN berechnet:

function s = summe(N) s = 0;

for k=1:N s = s + k;

end;

return;

Hier istNder Eingabe- unds der Ausgabewert. Eine Funktion wird mitfunctionbegonnen und kann mit return abgeschlossen werden. Der Funktionstext muss in einer eigenen Datei

“summe.m” abgespeichert werden (Format: “Funktionsname.m”). InOCTAVE wird die Funktion summefolgendermassen aufgerufen:

octave:1> summe(10) ans =

55

OCTAVE-Hilfe

Eine Erkl¨arung f¨ur einen OCTAVE-Befehl kann mit der help-Funktion erhalten werden. Zum Beispiel lieferthelp sqrtInformationen zur Quadratwurzelfunktionsqrt:

octave:1> help sqrt

-- Mapping Function: sqrt (X)

Compute the square root of X. If X is negative, a complex result is returned. To compute the matrix square root, see *note Linear Algebra::.

sqrt is a built-in mapper function

Additional help for built-in functions and operators is

available in the on-line version of the manual. Use the command

‘doc <topic>’ to search the manual index.

Help and information about Octave is also available on the WWW at http://www.octave.org and via the help@octave.org

mailing list.

Abbildungsverzeichnis

1.1 Baumringe. Quelle: Zentrum f¨ur Handwerk und Denkmalpflege Fulda. . . 7

1.2 Lineare Zu- und Abnahme. . . 9

1.3 Exponentielle Zu- und Abnahme. . . 11

1.4 Hasenvermehrung und Fibonaccifolge. . . 14

1.5 Die ersten 5 bzw. 15 Fibonaccizahlen. . . 14

1.6 Verschachtelte Spiralen bei der Sonnenblume. Quelle: Wikipedia, H. Haß. . . 16

1.7 Nautilus und Fibonaccizahlen. Quelle linkes Bild: Wikimedia, Chris 73. . . 17

1.8 Darstellung eines Vektors im 2d-Koordinatensystem. . . 19

1.9 Verlauf der Folge (1.19) mit Startvektor 1λ 1 . . . 27

1.10 Kormorane. Quelle: Vogelwarte Sempach, Emile Barbelette. . . 28

1.11 Kormoranenmodell. . . 33

1.12 Kormoranenmodell mit Lesliematrix aus Beispiel a). . . 35

1.13 Kormoranenmodell mit Lesliematrix aus Beispiel b). . . 36

2.1 Diskretes und kontinuierliches Wachstumsmodell. . . 48

2.2 Diskussion einer Funktion. . . 50

2.3 Logistisches Wachstum. . . 54

2.4 Logistisches Modell und US-Bev¨olkerung. Quelle: [17]. . . 55

2.5 Erntemodell: Populationsentwicklung und Gewinn. . . 57

2.6 L¨osungen zu den Lotka-Volterra Gleichungen. . . 59

2.7 Luchs mit Jungtier, und Schneehase. Quelle: National Geographic. . . 60

2.8 Schwankungen von Luchs- und Schneehasenfellen. . . 61

2.9 Konkurrenzmodell I. . . 64

2.10 Geschwindigkeitsfeld f¨ur das Konkurrenzmodell; beide Arten ¨uberleben. . . 66

2.11 Konkurrenzmodell II. . . 67

2.12 Geschwindigkeitsfeld f¨ur das Konkurrenzmodell; Ziegen ¨uberleben. . . 68

2.13 Wasserfloh Daphnia magna. Quelle: [7] . . . 71

3.1 Spruce budworm. Quelle: Natural Resources Canada . . . 75

3.2 Diskretisierung der Zeitvariable. . . 76

3.3 Numerische L¨osung der logistischen Gleichung. . . 78

3.4 Fehler zwischen numer. und exakter L¨osung der logistischen Gleichung. . . 79

3.5 Berechnungen zum Spruce-Budworm-Modell. . . 81

3.6 Diskretes logistisches Wachstum I. . . 84

3.7 Diskretes logistisches Wachstum II. . . 85

3.8 Diskretes logistisches Wachstum III. . . 86

3.9 Diskretes logistisches Wachstum IV. . . 87

3.10 Feigenbaumdiagramm. . . 88

3.11 Grafisches Gleichungsl¨osen. . . 89

3.12 Taylorpolynom erster Ordnung. . . 94

3.13 Numerische Berechnung mit Trapezverfahren. . . 98

4.1 Gerichteter Graph f¨ur das Wettermodell. . . 104

4.2 Gerichteter Graph f¨ur das Baummodell. . . 106

4.4 Capture-Recapture-Methode . . . 118

4.3 Aus NEWS-Ausgabe vom 22.6.2009. . . 118

4.5 Poissonverteilung f¨urλ= 4. . . 121

4.6 Semilogarithmische Darstellung der Poissonverteilung f¨urλ= 4. . . 121

4.7 Dynamik einer Blauwalpopulation. . . 128

5.1 Progesteronwerte beim Hausrind I. . . 132

5.2 Progesteronwerte beim Hausrind II. . . 137

A.1 Sinus- und Kosinuswerte am Einheitskreis. . . 140

A.2 Graphen vonsin(x)undcos(x). . . 140

A.3 Graphen vonsin(2πx)undcos(2πx). . . 141

A.4 Graphen vonsin(2πx/5)undcos(2πx/5)(d.h.L= 5). . . 142

A.5 Graphen vonsin(6πx/5)undcos(6πx/5)(d.h.L= 5undk = 3). . . 142

A.6 Graphen von 52sin(6πx/5)und 52cos(6πx/5)(d.h.L= 5,k = 3undA= 52). . . 143

Literaturverzeichnis

[1] H. Anton and C. Rorres. Elementary Linear Algebra, Applications Version. Wiley & Sons, 9th edition, 2005.

[2] B. Barnes and G. R. Fulford. Mathematical Modelling with Case Studies. CRC Press, 2nd edition, 2009.

[3] J. R. Beddington and R. M. May. The harvesting of interacting species in a natural ecosy-stem. Sci. Am., November(62–69), 1982.

[4] D. T. Bishop and C. Cannings. A generalised war of attrition. J. theor. Biol., 70:85–124, 1978.

[5] G. Dahlquist and A. Bj¨orck. Numerical Methods in Scientific Computing. SIAM, 2008.

[6] P. Deuflhard and F. Bornemann. Scientific Computing with Ordinary Differential Equations.

Number 42 in Texts in Applied Mathematics. Springer-Verlag New York, 2002.

[7] J. M. Drake. Are we underestimating species extinction risk? PLoS Biol., 3(7), 2005.

[8] A. Engel. Wahrscheinlichkeitsrechnung und Statistik. Verlag Ernst Klett, Stuttgart, 1973.

Band I.

[9] M. E. Gilpin. Do hares eat lynx? Amer. Nat., 107:727–730, 1973.

[10] E. Hairer, S. P. Nørsett, and G. Wanner. Solving ordinary differential equations. I. Nonstiff problems, volume 8 of Computational Mathematics. Springer-Veralg Berlin, 2nd edition, 1993.

[11] E. Hairer and G. Wanner. Solving ordinary differential equations. II. Stiff and differential-algebraic problems, volume 14 of Computational Mathematics. Springer-Verlag Berlin, 2nd edition, 1996.

[12] D. J. Higham and N. J. Higham. MATLAB guide. SIAM, 2nd edition, 2005.

[13] P. H. Leslie. On the Use of Matrices in Certain Popoulation Mathematics. Biometrica, 33:183–212, 1945.

[14] A. J. Lotka. Undamped oscillations derived from the law of mass action.

J. Amer. Chem. Soc., 42:1595–1599, 1920.

[15] A. J. Lotka. Elements of Physical Biology. Williams and Wilkins, Baltimore, 1925.

[16] D. Ludwig, D. D. Jones, and C. S. Holling. Qualitative analysis of insect outbreak systems:

the spruce budworm and forest. J. Anim. Ecol., 47:315–332, 1978.

[17] J. D. Murray. Mathematical Biology I, volume 17 of Interdisciplinary Applied Mathematics.

Springer Verlag, 2002.

[18] R. Pearl. The Biology of Population Growth. A. A. Knopf, New York, 1925.

[19] A. Quarteroni and R. Sacco and F. Saleri. Numerical mathematics, volume 37 of Texts in Applied Mathematics. Springer-Verlag Berlin, 2nd edition, 2007.

[20] H. R. Schneebeli. Von Kormoranen, Eiern und Matrizen. www.swisseduc.ch/ mathe-matik, 2006.

[21] H. R. Schneebeli and H. R. Vollmer. Skalarprodukte - schwingungen - signale.

http://www.swisseduc.ch/mathematik/schwingungen/.

[22] K. Sigmon. MATLAB Primer, 3rd edition, 1993.

[23] F. E. Smith. Population dynamics in daphnia magna. Ecology, 44:651–663, 1963.

[24] J. Maynard Smith. Evolution and the Theory of Games. Cambridge University Press, 1982.

[25] J. Maynard Smith and G. A. Parker. The logic of animal conflict. Nature, 246:15–18, 1973.

[26] W. Suter. Kormoran and Fische. Ver¨offentlichungen aus dem Naturhistorischen Museum Bern, 1, 1993.

[27] P.-F. Verhulst. Notice sur la loi que la population suit dans son accroissement. Corr. Math.

et Phys., 10:113–121, 1838.

[28] P.-F. Verhulst. Recherche math´ematiques sur le loi d’accroissement de la population. Nou-veau M´emoires de l’Acad´emie Royale des Sciences et Belles Lettres de Bruxelles, 18(3–38), 1845.

[29] V. Volterra. Variations and fluctuations of a number of individuals in animal species living together. Animal Ecology, pages 409–448, 1931. Ubersetzung des Originals von 1926¨ (italienisch).

Im Dokument Mathematik f ¨ur Biologie (Seite 147-160)