Programmiervorkurs für die Numerik Teil 2/4

Ähnliche Dokumente
WiMa-Praktikum 1. Woche 8

Mathematische Computer-Software

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II

Kurze Einführung in Octave

Programmiervorkurs für die Numerik Teil 4/4 (Juhu!)

Mathematik am Computer 4. Vorlesung Matlab: Teil 1

Einführung in Matlab Was ist MATLAB? Hilfe Variablen

MLAN1 1 MATRIZEN 1 0 = A T =

3 Kurzeinführung in Matlab

Zweiter Teil des Tutorials. Workspace M-files Matrizen Flow Control Weitere Datenstrukturen Gemeinsames Beispiel erarbeiten

MATRIZEN. Eine Matrix ist eine rechteckige Anordnung von Zahlen, als ein Schema betrachtet. a 11 a a 1n a 21. a a 2n A = a m1 a m2...

Mathematik am Computer 6. Vorlesung: Matlab, Teil I

Einführung in die Programmierung (MA8003)

2. Einführung in das Ingenieurtool MATLAB

Einführung in die Programmierung (MA8003)

Matrizen. a12 a1. a11. a1n a 21. a 2 j. a 22. a 2n. A = (a i j ) (m, n) = i te Zeile. a i 1. a i 2. a i n. a i j. a m1 a m 2 a m j a m n] j te Spalte

Praktikum zur Vorlesung: Numerische Mathematik für Lehramt SS Matlab: Fortsetzung. Jan Mayer. 4. Mai 2006

Grundlagen von MATLAB

Einführung in. Pierre Bayerl

Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

a 11 a 12 a 1(m 1) a 1m a n1 a n2 a n(m 1) a nm Matrizen Betrachten wir das nachfolgende Rechteckschema:

10:Exkurs MATLAB / Octave

Schülerworkshop Computertomographie Mathematik als Schlüsseltechnologie

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Ein kleiner Matlab Primer Frank Schimmel

Basiswissen Matrizen

Übung 4: Einführung in die Programmierung mit MATLAB

Übungen zur Einführung in die wissenschaftliche Programmierung. MATLAB Einführung Teil II. Teil I. Teil II

Matlab: eine kleine Einführung 2

Matlab: eine kleine Einführung 4

Matlab: eine kleine Einführung

1 Konsole öffnen. 2 matlab & und return eingeben. 3 Konsole dauerhaft geöffnet lassen. 1 Menüpunkt File - Exit MATLAB oder. 2 quit (und return) oder

Matrizen. Jörn Loviscach. Versionsstand: 12. April 2010, 19:00 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung.

Universität Stuttgart Physik und ihre Didaktik PD Dr. Holger Cartarius. Matrizen. a 1,1 a 1,2 a 1,n a 2,1 a 2,2 a 2,n A = a m,1 a m,2 a m,n

MATLAB - Grundlagen und Anwendungen (Teil I) Mentoring WiSe 2018/19. Maren Fanke, Alexandra Wesolek, Alexander Korzec Freie Universität Berlin

Einführung in die Programmierung (MA8003)

This image cannot currently be displayed. Java à Matlab. bereitgestellt von Dr. Lukas Faessler 12/4/17

Matrizen. Jörn Loviscach

a ij i - te Gleichung (Zeile), i = 1, 2,3,..., m I) MATRIZEN Motivation: 1) Speichern geometrischer Daten: Punkte, Vektoren. 2) Lineare Gleichungen

Grundlagen der Optimierung. Übung 1

Vektoren und Matrizen

Matrix: Eine rechteckige Anordnung reeller Zahlen a ij (i = 1,..., n i ; j = 1,..., m) in Zeilen und Spalten. Die a ij heiÿen Elemente von A.

Dr. Michael Lehn WS 2013/2014 Iris Häcker Klaus Stolle Institut für Numerische Mathematik Universität Ulm

35 Matrixschreibweise für lineare Abbildungen

1 Definition. 2 Besondere Typen. 2.1 Vektoren und transponieren A = 2.2 Quadratische Matrix. 2.3 Diagonalmatrix. 2.

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

m-files sind Folgen von MATLAB-Anweisungen oder Daten-Files.

Programmieren in C/C++ und MATLAB

A = ( a 1,..., a n ) ii) Zwei Matrizen sind gleich, wenn die Einträge an den gleichen Positionen übereinstimmen. so heißt die n n Matrix

Einführung in MATLAB. Grundlagen für die Übungen begleitend zur Vorlesung Neuroinformatik I

In den USA verwendet man statt dessen eckige Klammern, was sich in der Software niederschlägt (mit Ausnahmen wie Wolfram Alpha):

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

IV. Matrizenrechnung. Gliederung. I. Motivation. Lesen mathematischer Symbole. III. Wissenschaftliche Argumentation. i. Rechenoperationen mit Matrizen

I) MATRIZEN. 1) Speichern geometrischer Daten: Punkte, Vektoren. j - te Variable (Spalte), j = 1,2,3,..., n

Funktionen in Matlab. Lehrstuhl für Angewandte Mathematik Sommersemester und 29. Mai 2008

Lineare Algebra. 2. Übungsstunde. Steven Battilana. battilana.uk/teaching

INTELLIGENTE DATENANALYSE IN MATLAB. Einführung in MATLAB

Quadrieren Sie die Zahlen 3, pi, 1 und i mit Hilfe des Operators ^ und ziehen Sie aus den Ergebnissen jeweils die Wurzel.

Tutorium: Diskrete Mathematik. Matrizen

Vektoren und Matrizen

Matlab: eine kurze Einführung

Casio fx-cg20 Matrix eingeben, editieren, löschen und einfache Matrizenrechnungen

Einführung in MATLAB Blockkurs DLR:

In den USA verwendet man statt dessen eckige Klammern, was sich in der Software niederschlägt (mit Ausnahmen wie Wolfram Alpha):

Arithmetik in der tcsh

Inhalt. Mathematik für Chemiker II Lineare Algebra. Vorlesung im Sommersemester Kurt Frischmuth. Rostock, April Juli 2015

Anwendung von (Mathematica und) Matlab in der Physikalischen Chemie

Matlab Einführung für Signale und Systeme 2

Informationsverarbeitung im Bauwesen

Grundlagen der Videotechnik (Angewandte Mediensysteme/Prof. Schuller)

INTELLIGENTE DATENANALYSE IN MATLAB

Einführung in MATLAB. Grundlagen für die Übungen begleitend zur Vorlesung Neuroinformatik I

Programmieren. Aufgabe 1 (Eine erste Datenstruktur)

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung.

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

MATLAB Eine Einführung

Matrizen, Determinanten, lineare Gleichungssysteme

HDNUM. Peter Bastian (IWR) Numerik November / 158

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Einführung in Matlab

Mathematik II Frühjahrssemester 2013

Einführung in MATLAB Blockkurs DLR:

Mathematik I Herbstsemester 2014 Kapitel 8: Lineare Algebra 8.1 Reelle Matrizen

Lineare Gleichungssysteme und Matrizen

Kapitel 14. Matrizenrechnung

Vorbereitungskurs Mathematik zum Sommersemester 2011 Tag 7

2 Matrizen und Vektoren

Mathematik für Naturwissenschaftler II SS 2010

3 Matrizenrechnung. 3. November

Musterlösungen Blatt Mathematischer Vorkurs. Sommersemester Dr. O. Zobay. Matrizen

Dipl.-Volksw. Markus Pullen Wintersemester 2012/13

7.1 Matrizen und Vektore

Inhaltsverzeichnis. Angelika Bosl. Einführung in MATLAB/Simulink. Berechnung, Programmierung, Simulation. ISBN (Buch):

Matrizen. Lineare Algebra I. Kapitel April 2011

2.4 Lineare Abbildungen und Matrizen

Transkript:

line 1 1 0.8 0.6 0.4 0.2 0-0.2-0.4 Programmiervorkurs für die Numerik Teil 2/4 Christian Power Mathematisches Institut Universität Tübingen -8-6 -4-2 0 05.10.2016 2 4 6 8-8 -6-4 -2 0 2 4 6 8

Wiederholung Allgemeines zu MATLAB Anweisungen Operatoren (arithmetische Op. z.b. + -, relationale Op. z.b. < > und logische Op. z.b. &) Kontrollanweisungen (Schleifen, Verzweigungen) Ausgabe von Variablen 2 / 31

Gliederung Lösungsvorschläge Funktionen und Skripte Vektoren Matrizen 3 / 31

Lösungen für die Aufgaben des 1. Übungsblattes Aufgabe 4: mündlich Aufgabe 5: 1 for i = 1: 10 2 println (i) 3 end Aufgabe 6: 1 for i = 0: 10 2 println (2* i +1) 3 end Aufgabe 7: siehe Beispiel auf Folien des 1. Tages. Lösungsvorschläge 4 / 31

Lösungen für die Aufgaben des 1. Übungsblattes Aufgabe 8: 1 n = 10; 2 S = 0; 3 for i = 0 : n 4 S +=.5^ i 5 end 6 println (S) Aufgabe 9: 1 n = 10; 2 q =.25; 3 S = 0; 4 for i = 0 : n 5 S += q^i 6 end 7 println (S) Lösungsvorschläge 5 / 31

Lösungen für die Aufgaben des 1. Übungsblattes Aufgabe 10: 1 limes = 2; 2 maxit = 30; 3 tol =.01; 4 approx = 0; # Partialsumme Σ_{ i =0} ^ n.5^ i 5 for n = 0: maxit # Keine Endlosschleife 6 approx +=.5^ n 7 # Abbr. Bed. 8 if abs ( limes - approx ) < tol 9 println (n) 10 break 11 end 12 if n == maxit # letzte Iteration 13 println (" Zu viele Iterationen ") 14 end 15 end Lösungsvorschläge 6 / 31

Wozu Funktionen? Funktionen sind das Hauptwerkzeug um ein Programm zu Strukturieren. Gute Namen für Funktionen dokumentieren automatisch deinen Code. Die Fehler im Code korrelieren stark mit der Komplexität und der Länge des Codes. Benutze Funktionen, um einen langen Code in kleinere überschaubare Teile zu zerlegen. Faustregel: Eine Funktion sollte ca. sieben Zeilen lang sein, aber auf keinen Fall länger wie der Bildschirm. Funktionen und Skripte 7 / 31

Funktionen und Skripte MATLAB unterscheidet zwischen Skripten und Funktionen: Skripte sind Textdateien, die Anweisungen enthalten, die man genauso gut im Command Window einzeln eintippen könnte. Funktionen sind auch Textdateien mit folgenden unterschieden zu Skriptdateien: Funktionsdataien enthalten spezielle Anweisungen: In der ersten Zeile steht als erstes das Schlüsselwort function und weiter hinten in der Zeile der zum Dateinamen gleichlautende Funktionenname. Funktionen können so angelegt werden, dass sie beim Aufruf ein oder mehrere Funktionsargumente erwarten z.b. f(x). Funktionen können so angelegt werden, dass sie nach ihrer Beendigung Rückgabewerte an den Aufrufer liefern. Es besteht die Möglichkeit, über spezielle Kommentare, eine Hilfe für die Funktion in MATLAB zu importieren. Funktionen und Skripte 8 / 31

Beispiel einer Funktion in MATLAB 1 function [ar, um] = area (a, b) 2 % Berechne Flaeche und Umfang 3 %{ 4 Precondition : 5 - Skalar a,b > 0 6 Postcondition : 7 - Skalar ar, um > 0 8 %} 9 assert (a >0 & b >0) 10 ar = a * b; 11 assert (ar >0) 12 um = 2 * a + 2 * b; 13 assert ( um > 0) 14 end Funktionen und Skripte 9 / 31

Erläuterung Der Dateiname der im obigen Bsp. definierten Funktion namens area lautet area.m. Die Funktion liefert als Rückgabewert in einem Feld zwei Variablen passenden Typs zurück: ar und um. Die Funktion erwartet beim Aufruf zwei Variablen passenden Typs: a und b Bei MATLAB müssen die Rückgabewerte nicht speziell irgendwo gesetzt werden oder speziell zurückgegeben werden. Erwartet die Funktion keine Argumente, bleibt die runde Klammer hinter dem Funktionsnamen leer (). Gibt die Funktion keine Arugment zurück bleibt die eckige Klammer hinter function leer []. Funktionen und Skripte 10 / 31

Beispiel einer Funktion in Julia 1 """ 2 (ar,um) = area (a,b) 3 Berechne * Flaeche * (ar) und * Umfang * (um ). 4 5 - ** Precondition **: Skalare a,b > 0 6 - ** Postcondition **: Skalare ar, um > 0 7 8 # Beispiel 9 julia 10 julia > area (1,1) 11 (1,4) 12 13 """ 14 function area (a, b) Funktionen und Skripte 11 / 31

Beispiel einer Funktion in Julia 1 function area (a, b) 2 assert (a >0 && b >0) 3 ar = a * b 4 assert (ar >0) 5 um = 2* a + 2* b 6 assert (um >0) 7 return (ar, um) 8 end Funktionen und Skripte 12 / 31

Erläuterung Der Text vor der Funktion wird steht für die Dokumentation zur Verfügung. Bei Julia werden am Anfang keine Rückgabewerte angegeben werden. Mit return kann man mehrere Rückgabewerte angeben. Erwartet die Funktion keine Argumente, bleibt die runde Klammer hinter dem Funktionsnamen leer (). Funktionen und Skripte 13 / 31

Beispiel g1 = 3; [a,b] = area (g1, 2) include (" area.jl") # Lade Defi. g1 = 3 (a, b) = area (g1, 2) Funktionen und Skripte 14 / 31

Variablen I MATLAB und Julia ist ein auf Matrizen basierendes Werkzeug. Alle Daten die in MATLAB eingegeben werden, werden als Matrix oder mehrdimensionales Array abgespeichert. In MATLAB sind Skalare und Vektoren nur der Spezialfall von Matrizen. Skalare sind (1 1)-Matrizen. Vektoren der Dimension n sind (1 n) oder n 1-Matrizen. MATLAB und Julia nummerieren die Elemente beginnend von 1 nicht mit 0! Mit dem Befehl whos bzw. whos() kann man rausfinden, welche Variablennamen schon vergeben wurden. Vektoren 15 / 31

Initialisierung von Vektoren a = [1, 2, 3, 4] % Zeilenvektor der Dim. 4 b = [1 2 3 4] % a == b c = [1; 2] % Spaltenvektor der Dim. 2 d = 1:. 1: 2 % ZEILENvektor der Dim. 11 a = [] % leerer Vektor a = [1, 2, 3, 4] # Spaltenvek. Dim. 4 b = [1 2 3 4] # Zeilenvek. Dim. 4 c = [1; 2] # Spaltenvek. Dim. 2 d = collect (1:.1:2) # Spaltenvek. Dim. 11 a = [] # Leerer Vektor Der letzte Ausdruck kann zum Löschen einer Variable (hier Vektor a) benutzt werden. Vektoren 16 / 31

Zugriffsarten auf Vektoren als Ganzes: g = a; % g == a g = copy (a); # g == a Elementweise bei MATLAB g = a (1); % g ist ein Skalar i = 2; g = a(i); % g enthaelt i-tes Element g = a( end ); % g enthaelt letztes Element Vektoren 17 / 31

Zugriffsarten auf Vektoren Elementweise bei Julia g = a [1]; # g ist ein Skalar i = 2; g = a[i]; # g enthaelt i-tes Element g = a[ end ]; # g enthaelt letztes Element Bereichswahl: g = a (1:3); % length (g) == 3 g = a [1:3]; # Spaltenvektor, length (g )==3 Vektoren 18 / 31

Wichtige Methoden für Vektoren Wichtig: Indizes können nur natürliche Zahlen ohne Null sein! Transponieren ( ): x = [1 2 3]; % Zeilenvektor x = x ; % Spaltenvektor Länge eines Vektors ermitteln z.b. für Schleifen a = [3 7 3]; # 3 Elemente for i = 1: length (a) println (a[i]) end Vektoren 19 / 31

Beispiel Mittelwertberechnung Berechnung des Mittelwertes x = 1 n n i=1 x i für n = 4 und die Werte x = (x 1,..., x 4 ) = (3, 7, 5, 1). 1 input = [3 7 5 1]; 2 size = length ( input ); 3 summe = 0; 4 # Berechne summe 5 for i = 1 : size 6 summe += input [ i] 7 end 8 mittelwert = summe / size ; 9 println ( mittelwert ) Vektoren 20 / 31

Operatoren auf Vektoren Operatoren wirken auf Vektoren anders als auf Skalare. Unter anderem existieren folgende Operatoren auf Vektoren, wobei die Vektoren dafür dieselbe Dimension besitzen müssen: Zuweisungsoperator: = a = b = a(i)=b(i) für alle i. Arithmetische Operatoren: + - a + b = a(i)+b(i) für alle i. Arithmetische Operatoren: * a * b hat zwei Bedeutungen 1. Falls a, b Vektoren sind siehe Übungen. 2. Falls a ein Skalar und b ein Vektor ist, dann ist gilt a * b(i) für alle i. relationale Operatoren: == = bzw. bei Julia ==!= a == b = a(i) == b(i) für alle i. Weiter Operatoren sind definiert, werden aber nicht besprochen. Vektoren 21 / 31

Initialisierung von Matrizen 1/2 A = [1 2 3 4; 5 6 7 8] % 2 x 4 - Matrix B = [1 5; 2 6; 3 7; 4 8] % A == B ( ) 1 2 3 4 A = 5 6 7 8 A [2,:] = [9 10 11 12] # Neue 2. Zeile ( ) 1 2 3 4 A = 9 10 11 12 A = [] # Leere Matrix Dieser Ausdruck kann zum Löschen der Matrix benutzt werden. Matrizen 22 / 31

Initialisierung von Matrizen 2/2 I = eye (3) # 3 x 3 Einheitsmatrix A = zeros (3,4) # 3 x 4 Nullmatrix B = ones (4,2) # 4 x 2 Einsmatrix v = [1;2;3;4] # Zeilenvektor D = diagm ( v) # Diagonalmatrix # Im Zweifelsfall diagm (v [:]) v = [1 2 3 4] % Ein Vektor D = diag ( v) % Diagonalmatrix 1 0 0 0 D = 0 2 0 0 0 0 3 0 0 0 0 4 Matrizen 23 / 31

Zugriffsarten auf Matrizen in MATLAB als Ganzes: B = A % Kopiere A Elementweise: g = A (2,1) % g ist (2,1) - Element i = 1; g = A(i,end ) % g ist oben rechts g = A (:,1) % g ist erste Spalte Bereichswahl: g = A (:,1) % g ist erste Spalte g = A (1,2:3) % length (g) == 2 Matrizen 24 / 31

Zugriffsarten auf Matrizen in Julia als Ganzes: B = copy ( A) # entspricht Matlab B = A Elementweise: g = A [2,1] # g ist (2,1) - Element i = 1; g = A[i,end ] # g ist oben rechts g = A [:,1] # g ist erste Spalte Bereichswahl: g = A [:,1] # g ist erste Spalte g = A [1,2:3] # length (g) == 2 Matrizen 25 / 31

Wichtige Methoden für Matrizen Transponieren ( ): A = [1 2; 3 4; 5 6] # 3 x 2 - Matrix B = copy ( A) # entspricht Matlab B = A Länge eines Vektors ermitteln z.b. für Schleifen A = A # Transponieren A = A % Transponieren Matrizen 26 / 31

Beispiel Matrizenmultiplikation Für eine gegeben (m n)-matrix A und eine (n r)-matrix B ist die Matrix-Multiplikation folgendermaßen definiert: c ij = n a ik b kj, k=1 für i = 1,..., m und j = 1,..., r. Matrizen 27 / 31

Beispiel Matrizenmultiplikation 1 A = [1 2 3 4; 5 6 7 8] 2 B = [9 10; 11 12; 13 14; 15 16] 3 assert ( size (A,2)== size (B,1)) # Kompatibel 4 C = zeros ( size (A,1), size (B,2)) 5 for i = 1 : size ( C,1) # Spalte 6 for j = 1 : size ( C,2) # Zeile 7 # Innere Summe 8 C[i,j] = 0 9 for (k = 1 : size (A,2)) 10 C[i,j] += A[i,k] * B[k,j] 11 end 12 end 13 end Matrizen 28 / 31

Operatoren auf Matrizen 1/2 Es gelten die üblichen Rechenregeln für Matrix-Matrix-, Matrix-Vektor- und Skalar-Matrix-Operationen: Zuweisungsoperator: = A = B = A(i,j) = B(i,j) für alle i, j. Arithmetische Operatoren: + - A + B = A(i,j) + B(i,j) für alle i, j. Matrizen 29 / 31

Operatoren auf Matrizen 2/2 Arithmetischer Operator: * A * B hat drei Bedeutungen 1. Falls A eine Matrix und B eine Matrix ist, dann haben wir eine Matrixmultiplikation. Siehe Beispiel. 2. Falls A ein Skalar und B eine Matrix ist, dann gilt A * B(i) für alle i. 3. Falls A eine (m n)-matrix ist und B eine (n 1)-Vektor ist, dann haben wir eine Matrix-Vektor-Multiplikation. Relationale Operatoren: == = bzw. bei Julia ==!= A == B = A(i,j) == B(i,j) für alle i, j. Oben gibt es einen kleinen Unterschied. Bei MATLAB erzeugt der == Operator eine Matrix mit den Einträgen 0 oder 1. Bei Julia wird einfach der Wert true oder false zurück gegeben. Möchte man den von MATLAB Operator, dann muss man.== benutzen. Analog für die anderen Operatoren. Matrizen 30 / 31

Variable II Löschen von Variablen bei MATLAB (sinnvoll wenn Variable andere Dimension erhalten soll) A = 5 clear A % Vernichte A A = 7 A = [] % Pseudo vernichte A clear all % Vernichte alles Julia besitzt kein clear, da es über ein Garbage collector verfügt. workspace() entspricht aber clear all. Die Variable ans nimmt Ergebnis einer Berechnung auf, wenn keine Ziel-Variable angegeben wurde. Matrizen 31 / 31