Eine kurze Einführung in Octave

Ähnliche Dokumente
Einführung in MATLAB / GNU Octave

Eine kurze Einführung in Octave

Matlab - eine kurze Einführung

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

Matlab: eine kurze Einführung

Einführung in Matlab Was ist MATLAB? Hilfe Variablen

Einführung in. Pierre Bayerl

Schülerworkshop Computertomographie Mathematik als Schlüsseltechnologie

Einführung in MATLAB + MATLAB Simulink. Dipl.-Inf. Markus Appel

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

2 Matrizen und Vektoren

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

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Signale und Systeme 1 (Erste Großgruppenübung)

2. Einführung in das Ingenieurtool MATLAB

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

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

10:Exkurs MATLAB / Octave

Einführung in MATLAB

Ein kleiner Matlab Primer Frank Schimmel

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

Jens Kappei. Vorlesung Numerische Basisverfahren 21./

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

3 Kurzeinführung in Matlab

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

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

WiMa-Praktikum 1. Woche 8

Lernziele Dateiverwaltung Bearbeiten von Textdateien Sichere Anmeldung per SSH-Schlüssel. Linux für Anfänger

Übungsblatt 1: Zur Benutzung von Computern im CIP-Pool der Informatik

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

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

GNUPlot. Anleitung zu. 1 Grundlagen. Aloha. Zunächst hier einmal ein Bild der GNUPlot-Oberäche: Abb.1: GNUPlot-Oberäche

Einführung in MATLAB zur Veranstaltung Einführung in die Numerik

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Dipl.-Volksw. Markus Pullen Wintersemester 2012/13

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

Überblick zum Thema CDO und Shell-Skripting

Eine Einführung zum numerischen Programmieren mit Matlab

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

Einführung in MATLAB Blockkurs DLR:

Octave/Matlab-Übungen

Matrizen. Jörn Loviscach

MATLAB Eine Einführung

Informatik I Tutorial

Linux Kommandozeile: Einfache Skripte. 1 Wiederhohlung. 2 Einfache Skripte

Übersicht Shell-Scripten

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

Mathematik am Computer 4. Vorlesung Matlab: Teil 1

MATLAB. 18. Mai 2010 MATLAB. Eine Einführung. Marina Schneider. Inhalt. Allgemeines zu MATLAB und erste Schritte. Vektoren und Matrizen.

MATLAB Einführung. Numerische Methoden für ITET und MATL Dr. S. May, D. Devaud. ETH Zürich, Seminar for Applied Mathematics

Programmieren. Aufgabe 1 (Eine erste Datenstruktur)

MATLAB Onlinevorlesung. Dipl.-Inf. (FH) Patrick Rogge Seite 1

Vorsemesterkurs Informatik

Einführung in die Informatik I

Numerische Lineare Algebra - Matlab-Blatt 2

Informatik 1 Tutorial

Informationsverarbeitung im Bauwesen

Numerische Lineare Algebra - Matlab-Blatt 1

Linux-Einführung Übung

Numerische Verfahren Übungen und Lösungen, Blatt 1

Bash-Skripting Linux-Kurs der Unix-AG

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Matlab Einführung. Tobias Wunner

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

Bash-Skripting Linux-Kurs der Unix-AG

Ruby Die bebilderte Anleitung

HDNUM. Peter Bastian (IWR) Numerik November / 158

Zyklen: break und continue

Hochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1.

Einführung in die Programmierung (MA8003)

Einführung in GNUPLOT

Technische Mechanik mit Computern. Labor-Einführung

Einführung in die Programmierung (MA8003)

Grundlagen von MATLAB

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Einführung in MATLAB für Maschinenbauer im ersten Semester. Aufgaben und Lösungen

Einführung in die Programmierung (MA8003)

Linux-Camp: Linux als Server am Beispiel LAMP

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

Programmieren in MATLAB Mehr als nur ein Taschenrechner

COMPUTERIA VOM

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

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

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Allgemeine Informatik 1 im WS 2006/07 Übungsblatt 1 (Teil 2)

TI-Basic. Programme und Funktionen

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

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

Funktionen in JavaScript

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

pwd mkdir Zeigt das aktuelle Verzeichnis an Beispiel: pwd

INTELLIGENTE DATENANALYSE IN MATLAB

Matlab Einführung Einführung in die Neuroinformatik SS 12. Miriam Schmidt Institut für Neuroinformatik

Probeklausur Informatik 2 Sommersemester 2010

3 Matrizenrechnung. 3. November

Einführung in das wissenschaftliche Rechnen

Ein kleiner Programmierkurs

Einführung in MATLAB für Maschinenbauer im ersten Semester

Transkript:

Heidelberg, ab dem 22.10.2012 Eine kurze Einführung in Octave Matthias Klinger Arbeitsgruppe Numerik und Mathematische Methoden der Simulation Universität Heidelberg

Übersicht Organisatorisches Was ist Octave??? Block A: Octave als wiss. Taschenrechner auf dem Computer Zuweisung von Werten an Variablen. Anlegen und Bearbeiten von Vektoren & Matrizen. Operatoren auf Vektoren & Matrizen. Block B: Mit Octave programmieren Anlegen von Funktionen mit Octave. Simple Funktionsauswertungen. Schleifen und Verzweigungen. Realisierung von numerischen Algorithmen. Übersicht

Organisatorisches Ansprechpartner: Termine: Matthias Klinger matthias.klinger@iwr.uni-heidelberg.de Manuel Hofmann manuel.hofmann@stud.uni-heidelberg.de Montag 18-20 Uhr Mittwoch 16-18 Uhr Freitag 14-16 Uhr Organisatorisches

Rechner & Passwörter Login Ausgangssituation: Benutzername: nok13x, wobei x = 005 bis x = 100 Passwort: xxxxxxxxxxx Passwort sofort ändern und merken!!!!!! : a Terminal öffnen b In die Kommandozeile passwd eintippen und <ENTER> drücken c Altes Passwort (xxxxxxxxxx) eintippen d Neues Passwort eingeben e Neues Passwort bestätigen f ertig Organisatorisches

Zulassung zur Klausur Die erfolgreiche Teilnahme an den praktischen Übungen ist notwendig für die Zulassung zur Klausur!!! Was heißt erfolgreiche Teilnahme? Abgabe in festen Gruppen à zwei Studenten in den Übungsgruppen. Die Studenten müssen für eine erfolgreich bearbeitete Aufgabe ihr Programm und die Mathematik dahinter erklären und auf Nachfragen der Tutoren eingehen können. Innerhalb von zwei aufeinanderfolgenden Wochen muss mindestens eine Aufgabe erfolgreich abgegeben werden. Es darf also am Ende keine Lücke von 2 Wochen bei den Abgaben geben! Dabei darf der Abgabetermin der jeweiligen Aufgabe außerdem nicht überschritten werden. Bsp.: Student X hat die Aufgabe in der dritten Woche nicht abgegeben, muss damit die Aufgabe 4 verpflichtend bearbeiten, um die Zulassung zur Klausur zu schaffen. (Falls er merkt, dass er die Aufgabe 4 nicht schafft, kann er nicht nachträglich die Aufgabe 3 bearbeiten, da deren Abgabetermin bereits überschritten ist!!!!!) Organisatorisches

Noch ein paar Kleinigkeiten: Tauchen identische Programme in unterschiedlichen Gruppen auf, werden allen beteiligten Gruppen (auch rückwirkend) die erfolgreichen Bewertungen der jeweiligen Aufgabe gestrichen. Wir wissen, dass die meisten von euch Anfänger sind und sich nicht mit der Software auskennen, daher werden wir viele Tipps geben und für Fragen immer zur Verfügung stehen!!! Trickst nicht, sondern lasst euch helfen!!! Wer die Aufgaben mit Programmiersprachen wie C++, Java, Python, etc. bearbeiten möchte, kann dies gerne tun. Nachteil: Keinerlei Hilfe und Unterstützung von unserer Seite, falls Probleme auftreten! Organisatorisches

Was ist Octave??? Frei erhältliche Software zur numerischen Auswertung von mathematischen Problemen: Lösung von LGS, Integration, Nullstellenber., etc. (Numerik 0). Lösung von Gewöhnlichen Differentialgleichungen (Numerik 1). Lösung von Partiellen Differentialgleichungen (Numerik 2). Octave basiert auf einer Skriptsprache, die im wesentlichen kompatibel zur Syntax des kommerziellen Programms Matlab ist. Matlab ist ebenfalls auf den Rechnern im CIP-Pool installiert und kann später als grafische Benutzeroberfläche für die Octave Programme benutzt werden. Die grafische Ausgabe erfolgt über das Programm Gnuplot, welches in Octave enthalten ist. Die Befehlseingabe bei beiden Programmen erfolgt über die Kommandozeile. Was ist Octave???

Woher bekommt ihr Octave??? Windows: Linux: Installiert GNU Octave: 1. http://sourceforge.net/projects/octave/files/ 2. Klick auf Octave Windows binaries! 3. Ladet euch eine Octave Version herunter. Unser Tipp Octave 3.2.4.: Klick auf Octave 3.2.4 for Windows MinGW32 Installer Laden Sie die *setup.exe herunter und installieren Sie diese! Installiert euch als Editor das Programm notepad++: Z. B. erhältlich auf http://notepad-plus-plus.org/ In der Regel findet sich Octave in den Paketverwaltungen der gängigen Linux-Distributionen (Suse, Ubuntu etc.). Editor: kate, vim, etc. Was ist Octave???

BLOCK A Block A

Starten von Octave Windows Octave wird wie jede andere Executable-Datei unter Windows ausgeführt Es öffnet sich ein schwarzes Fenster, welches im folgenden als Shell, Terminal oder Kommandofenster bezeichnet wird In das Fenster könnt ihr analog wie im Linux-Fall Befehle in die Kommandozeile eingeben Ihr seit jetzt startbereit und könnt die folgenden 2 Folien überspringen Linux (Rechner im CIP-Pool) Terminal öffnen! Wenn Ihr Erfahrungen mit Linux habt könnt ihr die nächste Folie überspringen und direkt Octave starten, so wie es auf der übernächsten Folie beschrieben ist Block A

Linux-Terminal Dateien und Verzeichnisse anzeigen lassen: ls Ein Verzeichnis anlegen: mkdir TestOrdner Benutzt abermals ls. Was hat sich geändert? In das Verzeichnis wechseln: cd TestOrdner Wieder ls verwenden. Beobachtung? In das übergeordnete Verzeichnis zurück wechseln: cd.. ls. Und jetzt? Löschen von Dateien und Verzeichnissen: rm -r TestOrdner ls. Der Ordner sollte verschwunden sein! Aufgabe Erstellt einen Ordner der OctaveIntro heißt und wechselt in diesen Ordner! Block A

Octave oder Matlab öffnen Octave öffnen: Dazu braucht man die folgende Eingabe in die Konsole octave Octave schließen: Dazu tippt man: quit oder exit Matlab öffnen: Tippt: matlab & Matlab schließen: Ihr seht, dass Matlab ein eigenes Fenster geöffnet hat (eine sogenannte grafische Benutzeroberfläche). In der Mitte befindet sich wieder eine Kommandozeile (>>). Ihr schließt das Programm über File Exit MATLAB. Block A

Handwerkszeug 1) Variablen 2) Vektoren und Matrizen 3) Grundlegende Operatoren 4) Ein paar integrierte Funktionen und Hilfen 5) Grafische Ausgabe von Funktionen Octave - Handwerkszeug

Variablen Variablen werden durch die Zuordnung von Werten angelegt. Variablennamen müssen mit einem Buchstaben anfangen, ansonsten dürfen Buchstaben, Zahlen und Unterstriche benutzt werden. Es wird zwischen Groß- und Kleinschreibung unterschieden (A a). Variable anlegen und Wert zuordnen: octave:1 > a = 3.14159; Variable ausgeben: octave:2 > a ergibt: a = 3.14159 Octave - Handwerkszeug - Variablen

Variablen Optisch ansprechendere Ausgabe: octave:1> disp([ Variable a =, num2str (a)]) bewirkt Variable a = 3.14159 Das Semikolon hinter einer Wertzuweisung unterdrückt die Ausgabe. So weist octave:2 > a = 3.14159 der Variable a den Wert 3.14159 zu und erzeugt die Ausgabe a = 3.14159. Bis auf Ausnahmen sind die Werte, die wir Variablen in Octave zuordnen können, n m Matrizen. Ein Skalar ist dann eine 1 1 Matrix. Zeilenvektoren sind 1 m Matrizen und Spaltenvektoren n 1 Matrizen. Octave - Handwerkszeug - Variablen

Vektoren erstellen Vektoren anlegen a) Komponentenweise eingeben b) Mit (vorgegebenen) Funktionen sukzessive füllen. octave:1> a = [1, 2, 3] erzeugt die Ausgabe: a = ( 1 2 3 ) octave:2> b = [11; 23] erzeugt die Ausgabe: b = ( ) 11 23 Beispiele für spezielle Funktionen zum Füllen eines Vektors: octave:3> c = 1 : 5 liefert den Vektor c = ( 1 2 3 4 5 ). octave:4> d = 1 : 2 : 5 liefert den Vektor d = ( 1 3 5 ). Die Länge eines Vektors a wird mit length(a) abgefragt. octave:5> length(a) ans = 3 octave:6> length(c) ans = 5 Octave - Handwerkszeug - Vektoren & Matrizen

Vektoren bearbeiten Lese-/Schreibzugriff auf die i-te Komponente von a über a(i): Sei e = 11 : 15 = ( 11 12 13 14 15 ) octave:1> val = e(3) val = 13 octave:2> e(3) = 24 e = ( 11 12 24 14 15 ) Analoger Zugriff auf Subvektoren: Sei f = 5 : 1 = ( 5 4 3 2 1 ) octave:3> g = f (2 : 4) g = ( 4 3 2 ) octave:4> f (2 : 4) = [5 5 5] f = ( 5 5 5 5 1 ) Mittels werden Vektoren (und später auch Matrizen) transponiert 4 octave:5> g liefert den Vektor 3 als Ausgabe 2 Octave - Handwerkszeug - Vektoren & Matrizen

Matrizen erstellen Wie bereits erwähnt, sind Vektoren spezielle Matrizen in Octave. Ergo lassen sich auch Matrizen sowohl explizit als auch mithilfe von Funktionen befüllen. ( 1 2 3 ) octave:1> A = [1, 2, 3; 4, 4, 4; 0, 0, 0] erzeugt A = 4 4 4. 0 0 0 octave:2> v = [1, 2] octave:3> B = [v; 5, 32] erzeugt B = ( ) 1 2 5 32. Beispiele für spezielle Befehle zum Füllen einer Matrix: Einheitsmatrix: octave:4> I = eye(3) erzeugt I = Nullmatrix: octave:5> N = zeros(3) erzeugt N = ( 1 0 0 0 1 0 0 0 1 ( 0 0 0 0 0 0 0 0 0 n m Nullmatrix: octave:6> N = zeros(2, 3) erzeugt N = ( 0 0 0 ) Eins-Matrix:octave:7> N = ones(3) erzeugt N =. ( 1 1 1 1 1 1 1 1 1 ). ). 0 0 0 ). n m Eins-M.: octave:8> N = ones(1, 3) ergibt N = ( 1 1 1 ). Octave - Handwerkszeug - Vektoren & Matrizen

Matrizen bearbeiten 1 2 3 4 Sei nun C = 0 1 0 0. 0 0 1 0 [n, m] = size(c) liefert den Zeilenvektor ( n und m = #Spalten von C. Bsp.: octave:1> [n, m] = size(c) gibt den Vektor ( 3 Lese-/Schreibzugriff auf den Eintrag i, j mittels C(i, j) Bsp.: octave:2> val = C(1, 3) val = 3. m ), wobei n = #Zeilen 4 ) zurück. Zugriff auf n-te Zeile / m-te Spalte mittels C(n, :), bzw. C(:, m) octave:3> w = C(1, :) liefert w = ( 1 2 3 4 ). octave:4> u = C(1, 3 : 4) hingegen ergibt u = ( 3 4 ). 1 2 3 octave:5> C(:, 4) = [ ] löscht die 4. Spalte: C = 0 1 0. 0 0 1 Octave - Handwerkszeug - Vektoren & Matrizen

Grundlegende Operatoren Octave kennt die elementaren Operatoren +,,, / und Operatoren werden als Matrizenoperatoren interpretiert. Das Voranstellen eines Punktes (.+,.,.,./ und. ) erzwingt die komponentenweise Interpretation des Operators. Seien nun A und B n n Matrizen, v und w Spaltenvektoren passender Größe, sowie c und d Skalare. Operatoren zwischen Matrizen. (Komponentenweise) Addition: A + B, v + w und c + d Multiplikation: A B und c A liefern Matrizen, c d einen Skalar. A v, w B und c v liefern Vektoren. v w = n i=1 v i w i liefert einen Skalar. v w hingegen ergibt die Matrix (v i w j ) n i,j=1. Octave - Handwerkszeug - Grundlegende Operatoren

Beispiele zu den Operatoren Legt in Octave die folgenden Objekte an: Sei D = 2 eye(2), E = [4, 2; 0, 2], p = [1; 0], q = [1; 3] ( ) 6 2 octave:1> D + E ergibt, octave:2> p + q ergibt 0 4 ( ) 8 4 octave:3> D E ergibt, octave:4> 0.5 D 0 4 ( ) 2 octave:5> D p ergibt, octave:6> q 0 E ( 4 8 ). octave:7> p q ergibt 1, octave:8> p q ( ) 1 3. 0 0 ( 2 3). ( ) 1 0. 0 1 Octave - Handwerkszeug - Grundlegende Operatoren

Weitere grundlegende Operatoren Weitere Matrix-Operatoren (A, B seien n n Matrizen. v,w Vektoren. c Skalar.) Division: A/B berechnet A B 1 (falls B invertierbar). Potenzieren: A c berechnet A c. Komponentenweise Operatoren Multiplikation. : A. B und v. w Division./ : Analog zur Multiplikation. Potenzieren. : v. c und A. c bewirkt das komponentenweise Potenzieren. c. v liefert den Vektor (c v i ) n i=1. Hinweis Alle Operatoren lassen sich sinngemäß auch auf Submatrizen und -vektoren übertragen. Octave - Handwerkszeug - Grundlegende Operatoren

Beispiele zu den Operatoren octave:1> E/D, octave:2> E D 1 ergeben beide ( ) 16 12 octave:3> E 2, ( 0 4 ) 1.4142 0 octave:4> D 0.5. 0 1.4142 ( ) 8 0 octave:5> D. E, octave:6> p./q 0 4 Aufgabe ( 1 0). a) Man erzeuge mit dem Vektor r = (1 : 5) einen Vektor mit den ersten fünf Quadratzahlen. Verwende dazu.! b) Was erzeugt der Ausdruck octave:6> 2. (1 : 5)? ( ) 2 1. 0 1 Octave - Handwerkszeug - Grundlegende Operatoren

Funktionen und Hilfen octave:1> <EINGABE> abs( ) sqrt( ) exp( ) sin( ), cos( ), etc. diag( ) fliplr( ), flipud( ) sum( ) who help <Function> help Kurze Erläuterung Der Absolutbetrag (Matrizen: Komponentenweise) Die Wurzel Exponentialfunktion Trigonometrische Funktionen Erzeugt eine Diagonalmatrix (z.b. diag(1:5)) Spiegelt die Matrix (vertikal, horizontal) Summiert einen Vektor oder alle Spalten einer Matrix Variablenbelegung (Was ist alles schon erzeugt?) Informationen über die Funktion (z.b. help sum) Übersicht über sämtliche Funktionen von Octave Aufgabe Man erzeuge eine 10 10 Matrix F mit dem Befehl diag. Anschließend bestimme man die Summe aller Spalten und der gesamten Matrix. 4 1. F = 1 4........ 1 1 4 Octave - Handwerkszeug - Funktionen und Hilfen

Lösung der Aufgabe octave:1> dummy1 = 4 * ones(1,10) dummy1 = 4 4 4 4 4 4 4 4 4 4 octave:2> dummy2 = ones(1,9) dummy2 = 1 1 1 1 1 1 1 1 1 octave:3> F = diag(dummy1)-diag(dummy2,-1)-diag(dummy2,1) F = 4-1 0 0 0 0 0 0 0 0-1 4-1 0 0 0 0 0 0 0. 0 0 0 0 0 0 0-1 4-1 0 0 0 0 0 0 0 0-1 4 octave:4> sum(f) ans = 3 2 2 2 2 2 2 2 2 3 octave:5> sum(sum(f)) ans = 22 Octave - Handwerkszeug - Funktionen und Hilfen

Grafische Ausgabe Zu einem gegebenen Vektor von Stützstellen x wird der Vektor der zugehörigen Funktionswerte y = f (x) mittels plot(x,y) visualisiert. Bsp.: x = 0 : 0.01 : 10; und y = x. 2. octave:1> plot(x,y) Anstelle eines Vektors y kann auch eine Matrix Y übergeben werden. Dann wird der x-vektor gegen jede Spalte in einer anderen Farbe ausgegeben (Bsp.: Y = [x, (x. 2), (x. 3) ]). Beschriftung des Plots Titel title( titletext ); Achsen xlabel( x-achsentext ); ylabel( y-achsentext ); Legende legend( plot1, plot2,...); Achsen können mit semilogy, semilogx und loglog logarithmisch skaliert werden. Mit figure(i), wobei i N können mehrere Ausgabefenster geöffnet werden. Mit hold on können mehrere Plots in einem Fenster ausgegeben werden. Octave - Handwerkszeug - Grafische Ausgabe von Funktionen

Aufgabe zum plot-befehl Aufgabe Man plotte die Funktion f (x) = sin(x) auf I = [ π, π] und beschrifte die Achsen auf sinnvolle Art und Weise. Danach gebe man dem Plot einen Titel. Octave - Handwerkszeug - Grafische Ausgabe von Funktionen

Aufgabe zum plot-befehl Aufgabe Man plotte die Funktion f (x) = sin(x) auf I = [ π, π] und beschrifte die Achsen auf sinnvolle Art und Weise. Danach gebe man dem Plot einen Titel. octave:1> I = -pi:0.01:pi; octave:2> I(1:10) I = -3.1416... -3.0516 octave:3> fx = sin(i); octave:4> plot(i,fx); octave:5> title( Die Sinus-Funktion ); octave:6> xlabel( x ); octave:7> ylabel( f(x)=sin(x) ); Octave - Handwerkszeug - Grafische Ausgabe von Funktionen

BLOCK B Block B

Programmieren mit Octave und Abgabe Ihr sollt mit Octave nicht nur einzelne Werte evaluieren sondern im späteren Verlauf der Vorlesung Algorithmen umsetzen. Dazu braucht ihr die Möglichkeit ganze Befehlsketten zu bearbeiten 2 Optionen: I) Ein Skript schreiben oder II) Eine Funktion schreiben Ihr werdet immer Funktionen schreiben, die wiederum (falls notwendig) auf andere Funktionen zugreifen Ein Beispiel: Die Datei main.m function erg = main() v=[ 15 5-3 19 3]; j=length(v); w=exp(linspace(-1,1,j)); x=v.*w; k=sqrt(x*x ); l=abs(x(3)); y=3:l:30; m=length(y)/2; y=3:l:30; ans1 = (v*y(1:m) )*(w*y(m+1:2*m) ); erg=v(floor(log(ans1*k)/l)); end Block B

M-Files und eigene Funktionen Was ist ein m-file? Wie erstelle ich eigene Funktionen in einem m-file? Wie bekommt man Octave dazu, das zu tun, was man machen will? Konzipieren eines Funktionsaufbaus Wie beschreibt man Rekursionen/Iterationen mittels Schleifen und Verzweigungen? for-schleife while-schleife if-verzweigung Umsetzung anhand des Beispiels Horner-Schema! Block B

Horner-Schema Ziel ist es, das Horner-Schema zur Auswertung von Polynomen als Octave-Programm zu schreiben! Was ist das Horner-Schema? Polynom n-ten Grades: p(x) = a n+1 x n + a n x n 1 +... + a 2 x + a 1 Andere Darst.: p(x) = a 1 + x (a 2 + x (a 3 +... + x (a n + x a n+1)...)) Rekursion (Horner-Schema): 1: b n+1 = a n+1 2: b k = a k + ˆx b k+1 für k = n,..., 1 b 1 liefert den Polynomwert an der Stelle ˆx, also p(ˆx) = b 1 Vorteil: Statt n+1 i=0 i = (n+1)(n+2) 2 Multiplikationen nur noch n + 1 Multiplikationen bei gleichbleibender Anzahl von Additionen und leichte Stabilitätsvorteile des Horner-Schemas. Block B

end m-file wird unter dem Funktionsnamen (<name>.m) gespeichert Wichtig: Die Datei muss in das Verzeichnis gespeichert werden, in dem sie ausgeführt werden soll. Block B Matthias Klinger Funktionen Alle benötigten Variablen sowie Progammabläufe können in eine Datei (m-file <name>.m) geschrieben werden. Parameter können auch beim Aufruf von außen an die Funktion übergeben werden Vorteile: Zeitersparnis Wiederverwendbarkeit von Funktionen (bei Parameterübergabe) Vorgehen: Wir öffnen eine Textdatei mit einem Texteditor (kate, gvim, notepad++ oder Matlab-Editor) Prinzipieller Funktionsaufbau function [<out1>,...,<outn>] = <name>(<in1>,...,<inn>) <Funktionsbefehle>

Funktionen Arbeitsweise: Die Funktion besteht aus drei Teilen 1. Der Kopf: Eingabevariablen <in1>,...,<inn> Ausgabevariablen <out1>,...,<outn> Funktionsname <name> 2. Der Rumpf <Funktionsbefehle>: Initialisierung von (Funktions-)internen Variablen Manipulation der Variablen bei Octave- oder eigener Funktionen Aufbereitung und Setzung der Ausgabevariablen Hier wird die Funktion realisiert! 3. Das Ende via end oder return. Aufruf einer Funktion: Funktion wird über den Dateinamen aufgerufen. Dieser sollte mit dem Funktionsnamen übereinstimmen. Fehlerquelle: Oft werden die Eingangsvariablen falsch übergeben!!! Bei Fehlern sollte man hier als erstes nachschauen! Block B

Ein Beispiel Das Plotten der Exponentialfunktion soll als Funktion geschrieben werden. Dabei wollen wir einen Vektor mit Stützstellen x an die Funktion übergeben. Das m-file ExpPlot.m function erg = ExpPlot(x) end erg = exp(x); plot(x,erg); Block B

Funktionsaufbau anhand des Horner-Schemas Zurück zum Horner-Schema: Rekursion (Horner-Schema): 1: b n+1 = a n+1 2: b k = a k + ˆx b k+1 für k = n,..., 1 b 1 liefert den Polynomwert an der Stelle ˆx, also p(ˆx) = b 1 Diese Rekursion soll jetzt als Rumpf -Teil einer Funktion geschrieben werden. Die letzten Techniken, die ihr dazu benötigt, sind Schleifen und Verzweigungen! Block B

Schleifen for-schleifen Syntax: for <LAUFINDEX> = <START>:<ENDE> <OCTAVEBEFEHL-1> <OCTAVEBEFEHL-2>. <OCTAVEBEFEHL-M> end Für eine bestimmte Anzahl von Wiederholungen wird dieselbe Gruppe von Befehlen immer wieder ausgeführt. Dabei wird ein Laufindex hochgezählt, der ebenfalls in der Befehlsgruppe verwendet werden kann. Beispiel: sum=0; for i = 1:10 sum = sum + i end Block B

Schleifen while-schleifen Syntax: while <BEDINGUNG ERFÜLLT> <OCTAVEBEFEHL-1>. <OCTAVEBEFEHL-M> end Wiederholt eine Gruppe von Octave-Befehlen bis eine bestimmte logische Verknüpfung nicht mehr erfüllt ist. Beispiel: sum=10; while sum>0 sum = sum - 1 end Hinweis: Ändern wir im obigen Beispiel das Minus durch ein Plus, wird das Abbruchkriterium sum>0 nie erfüllt. Wir haben dann eine sogenannte Endlosschleife erzeugt. Ein laufendes Programm kann in Octave mittels Strg-C (Ctrl-C) beendet werden! Block B

Logische Vergleiche / if-verzweigung Logische Vergleiche Seien a und b zwei Skalare a gleich b? a == b a ungleich b? a = b a kleiner/größer gleich b? a kleiner/größer b? if-verzweigung Syntax: if <BEDINGUNG ERFÜLLT> <OCTAVEBEFEHL-A> else <OCTAVEBEFEHL-B> end a <= b, bzw. a >= b a < b, bzw. a > b Anhand eines logischen Vergleichs wird entweder der eine oder der andere Octave-Befehl ausgeführt. Beispiel: x=10;y=5; if (x>y) z=1 else z=0 end Block B

Aufbau für die Abgabe Anhand des Horner-Schemas, soll präsentiert werden, in welcher Form ein Programm im Rahmen der praktischen Übungen abgegeben wird! Ihr schreibt dazu immer eine Hauptfunktion die entweder main.m oder aufgabe<xy>.m heißt! Der Dateiname stimmt mit dem Namen der Hauptfunktion überein! Die Hauptfunktion besitzt keine Eingangsvariablen! In der Hauptfunktion werden alle Variablen generiert und von dort aus weitere Unterfunktionen ausgeführt. Im vorliegenden Fall eine (noch zu erstellende) Funktion horner(...)! Aufgaben in den einzelnen Funktionsteilen der Funktion horner(...): Kopf: Eingabevariablen: 1) Das Polynom p(x) als Koeffizientenvektor p = (a 1,..., a n+1 ). 2) Die Stelle ˆx an der p(x) ausgwertet werden soll. Ausgabevariablen: 1) Das Ergebnis p(ˆx). Rumpf: Logischer Vergleich: Ist das Polynom überhaupt von x abhängig (length(p)> 1)? Falls Nein : Gib a 1 als Ergebnis aus. Falls Ja : Beginne mit dem Horner-Algorithmus: a: Setze b n+1 = a n+1 b: Führe eine Schleife über b i = a i + ˆx b i+1 solange aus, bis b 1 berechnet ist! Block B

Block B Matthias Klinger Lösung: Die Datei main.m function erg = main() % Benoetigte Variablen % a Koeffizientenvektor beginnend mit dem kleinsten Koeff. % x Auswertungspunkt des Polynoms coeff = [ 5 0-9 13 2 1 ]; x = 1.345; % Funktionsaufruf erg = horner(coeff,x); end function erg = horner(a,x) end n = length(a); b(n) = a(n); while (n>1) n=n-1; b(n) = b(n+1) * x + a(n); end erg = b(n);

Hilfe!!!!!!!! Matthias Klinger Hilfe! Ich weiß nicht mehr weiter!!!! 1. Neben dem Befehl help gibt es noch den Befehl doc, der einzelne Befehle ausführlich dokumentiert. 2. Des Weiteren nutzt die Weiten des Internets http://www.mathworks.de/help/techdoc/ liefert eine ausführliche Matlab-Dokumentation mit vielen nützlichen Beispielen. Vorsicht!!! Es gibt einige kleine Unterschiede zwischen Octave und Matlab, deshalb wundert euch nicht, wenn mal etwas nicht funktioniert. In der Regel kann man aber mit einem kleinen Trick dennoch alle Probleme, die in der Vorlesung auftreten, mit Octave lösen! http://www.google.de :) Holt euch Impressionen von anderen Octave und Matlab Usern und adaptiert diese. Keine Kopien! Übernehmt nichts was ihr nicht versteht!!! 3. Nur in dem Fall, dass weder 1. noch 2. zu Ergebnissen geführt haben, wendet ihr euch an uns!