octave-tutorial
8 pages
Deutsch

octave-tutorial

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
8 pages
Deutsch
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Einfuhrung¨ in GNU OctaveS. Bouattour, D. Paulus21. Mai 2003Inhaltsverzeichnis1 Grundlagen 21.1 Was ist Octave ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Aufruf von Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Syntaxkonventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.5 Hilfe! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Datentypen 32.1 Numerische Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 String-Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3 Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Operationen 43.1 Matrixoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Kontrollstrukturen 64.1 Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64.2 if- und switch Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Fehlermeldungen 711 Grundlagen1.1 Was ist Octave ?Der Name Octave hat mit Musik nichts zu tun! Es ist der Name eines ...

Informations

Publié par
Nombre de lectures 215
Langue Deutsch

Extrait

Inhaltsverzeichnis
1
2
3
4
5
Einf¨uhrunginGNUOctave
S. Bouattour, D. Paulus
21. Mai 2003
Grundlagen 1.1 Was istOctave?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Aufruf vonOctave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Syntaxkonventionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 Hilfe!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Datentypen 2.1 Numerische Objekte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 String-Objekte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Datenstrukturen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operationen 3.1 Matrixoperationen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kontrollstrukturen 4.1 Schleifen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 if- und switch Anweisungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Funktionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fehlermeldungen
1
2 2 2 2 2 3
3 3 3 4
4 4
6 6 6 6
7
1
Grundlagen
1.1 Was istOctave? Der NameOctavehat mit Musik nichts zu tun! Es ist der Name eines ehemaligen Chemie Professors vom 1 Autor vonOctavehcereBe-.iDurf¨inseleTabentreseforPosserawrbackoftheenvelop¨rhutms,hcenlle nungendurchzuf¨uhren.EsisteineinteraktiveSkriptsprache,diespeziellf¨urvektorbasierteBerechnungen optimiert ist und dabei Standardroutinen der numerischen Mathematik (z.B. EISPACK oder LAPACK) auf einfacheWeisezug¨anglichmacht[?]. Zusa¨tzlich zu der Lo¨sung von Problemen der Linearen Algebra und derIntegralrechnung,demL¨osenvonGleichungssystemeundPolynomenetc.,istesm¨oglich,eigeneFunk-tionen zu denierenund/oder dynamisch geladene Module in C++, C oder Fortran zu verwenden. Dadurch ist Octave fast uneingeschra¨nkt erweiterbar!
1.2 Installation GNUOctavelDticsiterhibnutiondenalelrgVenmreeienwednn¨noufufgednneifrofeSartwdee,tsienie Lizenzregeln (General Public License GPL) unterliegt.
Linux:Octaveist ein Native-Linux-Programm, das bei vielen Distributionen schon als Binary-Package vorhanden ist. Ist dies nicht der Fall, so siehehttp://www.octave.org/download.html.
Windows:ObwohlOctaveein Linux-Programm ist, so existiert auch eine Portierung nach Windows. Dieses erfordert jedoch dennoch Linux-Grundwissen, weshalb eine FAQ unter http://octave.sourceforge.net/Octave Windows.htmeingerichtet wurde.
1.3 Aufruf vonOctave Starten vonOctavedurch:
Œ−→Interaktiver Modus. octave Œ−→Ausfu¨ hrung der Skriptdatei (s. Abschnitt1.4) und beenden vonOctave octave file.m .
Verlassen vonOctavedurch oder . quit exit
1.4 Syntaxkonventionen Die Syntax vonOctaveist der von MATLAB sehr a¨hnlich.Octave-Programme ko¨nnen meist von MATLAB ausgefu¨hrtwerden.DerUmgekehrteWegistaufgrunddesgr¨oßerenFunktionsumfangvonMATLABnicht immer gewa¨hrleistet.
.nedrewnebegegeraktivoder¨uberkSirtpadeteienniBehefk¨leennotnenedewtnir
Skriptdateien sind Textdateien mit dem Sufx.m. Sie werden im interaktiven Modus durch die Ein-gabe des Dateinamens ohne sufxinterpretiert (gelesen und ausgefu¨ hrt). Sie ko¨nnen aber auch durch den Aufruf von von der Shell aus interpretiert werden. In beiden Fa¨llen verhalten octave file.m sie sich so, als ob ihr Inhalt Zeile fu¨ r Zeile am Prompt eingegeben wu¨ rde.
Octaveist case-sensitive.
Das Semikolon (;ckt die Ausgabe der Auswer-) trennt mehrere Befehle in einer Zeile und unterdru¨ tung.
Das Komma (,hrmententr)enienielhefeBeredr¨unterle,urZeibadeuAgsrenekcdtuArerewsgnut abernicht.Dieskannf¨urAblaufkontrolleundDebuggingn¨utzlichsein.
1 John W. Eaton
2
Drei Punkte (. . .ned,sadsreuAdsurckindern¨achtenZieeloftregeszmtaw)tiirldZ.eenenbedeutde Dies ist sinnvoll, um zu lange Zeilen in mehrere aufzuteilen.
Kommentare beginnen mit dem Zeichen%oder#.
1.5 Hilfe! listet alle Befehle und internen Variablen auf. help gibt einen Hilfetext zur Variable oder Funktion finamefl aus. help name Beispiel:
2
octave:6> help norm
Datentypen
Intern bearbeitetOctave fastalle Datentypen als Matrizen; auch ein Skalar ist eine1×1Matrix.
2.1 Numerische Objekte 2 Reale und Komplexe Skalare:liegtsind gespeichert in doppelter Genauigkeit. Der Wertebereich 308 30816 zwischen2.2251×10und1.7977×10. Die relative Genauigkeit ist2.2204×10.
Matrizen:k¨neinonneibeilebeeßo¨rGegndnubeha¨oGrreiheßydanimcs¨hnaedrn.DieWerteeiner Matrix sind wiederum reale oder komplexe Skalare. Beispiel:
octave:32> [1 2; 3 4] ans =
1 2 3 4 octave:33> [1+2i ans =
1 + 2i 3 + 0i
2 + 0i 4 - 4i
2; 3 4-4i]
2.2 String-Objekte String-ObjektesindZeichenfolgen,diezwischeneinfachenoderdoppeltenAnf¨uhrungszeicheneingeschlos-sen sind (¨oder´. Intern speichertOctaveStrings als Matrizen von Zeichen. Alle Indizierungsoperationen, dief¨urMatrizendeniertsind,arbeitenauchaufStrings. Beispiel:
octave:11> x = ["das ", "ist ", "ein ", x = das ist ein Beispielsatz.
"Beispielsatz."]
octave:12> y = ["das ist ein Beispielsatz."] y = das ist ein Beispielsatz.
octave:12> x(8) == y(8) ans = 1 2 auf Systemen, die das IEEE oating-pointFormat verwenden
3
2.3 Datenstrukturen DatenstrukturendienenderZusammenfassungvonObjektenverschiedenerTypen.DieSyntax¨ahneltC-style Strukturen. Intern sind sie als assoziative Arrays implementiert. Beispiel:
octave:17> c.real=2; octave:18> c.img=3.45; octave:19> c.name="complex"; octave:20> c % Ausgabe der Struktur c = { name = complex real = 2 img = 3.4500 }
3
Operationen
Wertzuweisung: variable = expression Skalaroperationen:+die u¨ blichen Operatoren sind vorhanden: - * / ˆ \ Logische Operatoren:n:deanDbeiekitnameShrovdnisder¨nmitchenublietOnaknnoterepar . < <= > >= == & | Ausserdemstehtfu¨rungleichundf¨urnicht. <> ˜ Matrixoperationen:Matrizen sind die wichtigsten Bausteine zur Programmierung inOctave. Des-wegen ist eine besonders grosse Anzahl an Operationen zur Matrixmanipulation vorhanden. Eine ¨ubersichtlicheAuistungfolgtdeshalbimn¨achstenAbschnitt.
FunktionentigenMatvern¨unfoStfawerehamit-kjiebredeeid,olnseinsdeanrhvohcuanelhef,netl beiOctavenicht: usw. Wenn diese Operationen mit Matrizen sin,cos,exp,log,atan,abs, aufgerufen werden, so werden sie auf jedes Element der Matrix angewendet. Zusa¨tzlich bietetOctave viele andere Funktionen an, die sich mit bestimmten Themengebiete der Mathematik befassen (linea-re Algebra, nicht-lineare Gleichungen, Arithmetik, Differentialgleichungen, Optimierung, Statistik, Manipulation von Polynomen, Kontrolltheorie, Bildverarbeitung und Sprachverarbeitung usw.).
3.1 Matrixoperationen Zeilenvektor:
v = [ 1 2 3 ] oder v = [1,2,3,4]
Spaltenvektor:
v = [ 1; 2; 3 ]
Optional kann auch jedes Semikolon durch eine neue Zeile ersetzt werden:
v = [ 1 2 3 ]
Automatische Erzeugung von Zeilen-Vektoren mit konstantem Inkrement:
Begin:Inkerement:Ende
4
octave:47> x = 1:0.5:3 x =
1.0000
1.5000
Erzeugung einer Matrix:
2.0000
octave:48> A = [1 2; 3 4] A =
1 3
2 4
Zusammensetzung von Matrizen:
octave:48> A = [1 2; 3 4] A =
1 2 3 4 octave:49> b = [5;6] b =
5 6 octave:50> C=[A b] C =
1 3
2 4
5 6
2.5000
3.0000
bezeichnen Matrixaddition,- substraktion und -multiplikation. + - * transponiert und konjugiert A. A' transponiert A. A.' ckt durch einen dem Operator vorangestellten Punkt:Elementweise Operatoren werden ausgedru¨ usw. .* ./ .- .ˆ
A = [ 1 2; 3 4]; A.ˆ2 Aˆ2 % Quadrierung der
Indizierung und Slicing:
% Elementweise Matrix
potenzieren.
Œist das k-te Element des Zeilen- oder Spaltenvektor, wobei Indices bei 1 beginnen (nicht v(k) bei 0, wie bei Java/C/C++). Œist das Matrixelementakl A(k,l) Œist das fiSlicefl des Vektors vomm-ten bis zumn-ten Eintrag. v(m:n) v Œist diek-te Zeile der Matrix A. A(k,:) Œist diel-te Spalte der Matrix. A(:,l) Wichtige Matrixoperationen:
Œweist derk-ten Zeile von A den Zeilenvektor zv zu. A(k,:) = zv Œ¨olhtscedik-te Zeile aus A. A(k,:) = []
5
4
Œweist derl-ten Spalte von A den Spaltenvektor sv zu. A(:,l) = sv Œ¨lhcsoeidtl-te Spalte aus A. A(:,l) = [] Wichtige Matrixfunktionen:
Œgibt die La¨nge des Vektors v zuru¨ ck. length(v) Œgibt die Gro¨sse von A zuru¨ ck. [Zeilen, Spalten]=size(A) Œerzeugt einem×nMatrix mit 1-ern auf der Diagonalen. eye(m,n) Œerzeugt eine Nullmatrix. zeros(m,n) Œerzeugt eine Matrix, deren Elemente gleich 1 sind. ones(m,n) Œerzeugt eine Zufallsmatrix mit gleichverteilten Eintra¨gen. Andere Verteilungen, rand(m,n) z.B. Normalverteilung siehe . help randn
Kontrollstrukturen
4.1 Schleifen Die Syntax von for- und while Schleife soll anhand eines Beispiel vorgestellt werden:
for i=0:-2:-10 printf("%d\n",i); end
while k<K k=k+1; end
4.2 if- und switch Anweisungen Analog zu Schleifen werden hier zwei Beispiele vorgefu¨ hrt:
if x==0 error('x ist 0!') else y=1/x; end
switch pnorm case 1; sum(abs(v)) case inf; max(abs(v)) otherwise sqrt(v'*v)
end
4.3 Funktionen Funktionen werden innerhalb von Textdateien mit dem Sufx.mdeniert. Die Unterschiede zu Skripten bestehen im Wesentlichen in folgenden Punkten:
Das erste Code Fragment (keine Kommentare) innerhalb einerSkriptdateiist keine Funktionsdekla-ration. (ist die erste Zeile z.B so wird eine .m Datei zu einer Skriptdatei). 1; Funktionen ko¨nnen mit Argumenten aufgerufen werden.
6
Variable innerhalb einer Skriptdatei und ausserhalb von Funktionen sindglobal. Alle innerhalb der Funktionen verwendeten Variablen sindlokal. deklariert als globale Variable. global name name
function foo(arg1,arg2) global N %vdeklariere N tue was.. end
als globale Variable
¨ WirdNinderFunktionver¨andert,soistdieAnderungimgesamtWorkspacesichtbar.
dasTLABmussie(nnIAMet¨ibureioktdansdeenunrFedtimaNmitmmm.A.estisnamtionFunkDre sosein);IstdasnichtderFall,somussdieDatei,inderdieFunktiondeniertist,explizit¨uberden Befehl geladen werden. load werden. (In MATLAB ist dieses FeatureIn einer Skriptdatei ko¨nnen mehrere Funktionen deniert nicht vorhanden!!)
Dokumentation:Octaveist in der Lage, den ersten Kommentarblock nach der Deklaration des Funk-tionskopfeszuerkennenundbeimAufrufvonf¨urdieseFunktionauszugeben.Diesgiltf¨ur help Funktionen, die in Skript- und in Funktionsdateien deniertsind.
Beispiel:
function [R_ortho,d]=Orthogonalize(R) %%Orthogonalize a square matrix based on svd. %%returns orthogonal Matrix and its determinant. if(rows(R) != columns(R)) error ("Orthogonalize: Orthogobalization requires a square matrix."); end
[u,s,v]=svd(R); %Funktion liefert mehr als ein Parameter zur"uck.
% recalculate R with all singular % values set to 1 R_ortho = u*v'; d=det(R_ortho); endfunction
5
Fehlermeldungen
Parse errormeldet einen Syntaxfehler an der mit (x) markierten Stelle:
[ 1 2 parse >>> [
.. 3 4] error: 1 2 .. 3 4] ˆ
Runtime ErroracktArtBf¨urracenenIedssieenahtleifzaunLr,leehtfemenietedlBeidhefeerslehi angibt,umdieQuelledesFehlersleichtverfolgenzuk¨onnen.
octave:1> a=[1 2 3]; %deklaration eines Zeilenvectors octave:2> a*b % Multiplikation mit b: nicht definiert error: `b' undefined near line 2 column 3 %colum 3: dritte Stelle in der Zeile error: evaluating expression near line 2, column 3
7
% line 2: aktuelle Zeile. s. Prompt error: evaluating binary operator `*' near line 2, column 2 error: evaluating assignment expression near line 2, column 2
8
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents