34
Scilab-Skript Maria Magdalena Nafalska WS 09/10 Inhaltsverzeichnis 1 ¨ Uber dieses Skript 3 2 Einf¨ uhrung 3 3 Grundlegendes 3 3.1 Konsole .............................. 3 3.2 Scipad ............................... 3 3.3 Dateien einbinden ........................ 4 3.4 Wichtige Syntaxregeln ...................... 4 3.5 Hilfe-Browser ........................... 4 3.6 Fehlermeldungen ......................... 4 4 Elementare Funktionen und Operatoren 5 5 Komplexe Zahlen 5 5.1 Wichtige Befehle ......................... 6 5.2 Plotten von komplexen Zahlen ................. 6 6 Programmieren 7 6.1 for-Schleifen ............................ 7 6.2 if-then-else-Alternative ...................... 9 6.3 while-Schleifen .......................... 10 7 Scilab-Funktionen 12 7.1 Einbinden einer Scilab-Funktion ................. 12 7.2 Aufruf einer Scilab-Funktion ................... 12 8 Vektoren und Matrizen 13 8.1 Vektoren .............................. 13 8.2 Matrizen .............................. 14

Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Scilab-SkriptMaria Magdalena Nafalska

WS 09/10

Inhaltsverzeichnis

1 Uber dieses Skript 3

2 Einfuhrung 3

3 Grundlegendes 33.1 Konsole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2 Scipad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.3 Dateien einbinden . . . . . . . . . . . . . . . . . . . . . . . . 43.4 Wichtige Syntaxregeln . . . . . . . . . . . . . . . . . . . . . . 43.5 Hilfe-Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . 43.6 Fehlermeldungen . . . . . . . . . . . . . . . . . . . . . . . . . 4

4 Elementare Funktionen und Operatoren 5

5 Komplexe Zahlen 55.1 Wichtige Befehle . . . . . . . . . . . . . . . . . . . . . . . . . 65.2 Plotten von komplexen Zahlen . . . . . . . . . . . . . . . . . 6

6 Programmieren 76.1 for-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76.2 if-then-else-Alternative . . . . . . . . . . . . . . . . . . . . . . 96.3 while-Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . 10

7 Scilab-Funktionen 127.1 Einbinden einer Scilab-Funktion . . . . . . . . . . . . . . . . . 127.2 Aufruf einer Scilab-Funktion . . . . . . . . . . . . . . . . . . . 12

8 Vektoren und Matrizen 138.1 Vektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138.2 Matrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Page 2: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

9 Grafische Darstellung - 2D 159.1 Polygon (-zuge) . . . . . . . . . . . . . . . . . . . . . . . . . . 159.2 Funktionsgraphen . . . . . . . . . . . . . . . . . . . . . . . . . 169.3 m × n - Grafik - Matrix . . . . . . . . . . . . . . . . . . . . . 209.4 2D-Kurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229.5 Hohenlinien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239.6 2D-Vektorfelder . . . . . . . . . . . . . . . . . . . . . . . . . . 249.7 Flachen in der Ebene . . . . . . . . . . . . . . . . . . . . . . . 25

10 Grafische Darstellung - 3D 2710.1 Funktionsgraphen . . . . . . . . . . . . . . . . . . . . . . . . . 2710.2 3D-Kurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2910.3 Flachen im Raum . . . . . . . . . . . . . . . . . . . . . . . . . 31

11 Integration 3311.1 Integration-1D . . . . . . . . . . . . . . . . . . . . . . . . . . 3311.2 Integration-2D . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2

Page 3: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

1 Uber dieses Skript

Dieses kurze Scilab-Skript ist fur die TeilnehmerInnen der Analysis I und IIfur Ingenieure gedacht und soll einen Uberblick uber die in diesen beidenKursen benotigten Scilab-Befehle geben. Derzeit beinhaltet es noch nichtdas Thema Integration, dies wird aber entsprechend dem Vorlesungsstofferganzt.

Fehler und Verbesserungsvorschlage bitte an [email protected].

2 Einfuhrung

Scilab ist eine Programmierumgebung zur numerischen und grafischen Bear-beitung von mathematischen Aufgabenstellungen. Zudem ist sie kostenfrei,also eine gute Alternative zu MATLAB, denn Funktionalitat und Syntaxsind sehr ahnlich.

MATLAB wird in Industrie und an Hochschulen fur numerische Simu-lationen, Datenerfassung, Datenanalyse und -auswertung eingesetzt und istsomit praxisrelevant fur den Ingenieursberuf.

Die Software erhalten Sie kostenlos unter http://www.scilab.org. WennSie das Betriebssystem Windows haben, dann wahlen Sie den Scilab 5.1.1Installer in der 32 bzw. 64 Bits Version aus. Welche Version sie benotigen,erfahren Sie, indem Sie sich folgendermaßen durchklicken: ”Start” → Sy-stemsteuerung → ”System und Wartung” → ”System” → ”Systemtyp”

Bei anderen Betriebssystemen bitte gogglen.

3 Grundlegendes

3.1 Konsole

Beim Starten des Programms Scilab offnet sich die Konsole, in der manBefehle eingeben und durch Drucken der enter-Taste ausfuhren lassen kann.Durch Drucken der Pfeiltasten (↑, ↓) kann man durch die zuvor eingetipptenBefehle navigieren.

3.2 Scipad

Mochte man ein Scilab-Programm schreiben und nicht nur einzelne Befehlausfuhren lassen, so ist es sinnvoll, den Scipad zu offnen (in der Konsole

3

Page 4: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

oben links auf den Notizblock klicken) und den Code dort einzutippen undabzuspeichern (File → Save as).

3.3 Dateien einbinden

Mochte man eine (zuvor abgespeicherte) Datei mit Scilab ausfuhren oderauch einzelne Befehle, welche sich in einer bestimmten Datei befinden, ver-wenden, so muss man diese Datei zunachst bei Scilab einbinden: man offnetdie Datei im Scipad (”File → Open”) und bindet sie durch ”Execute →Load into Scilab” ein.

3.4 Wichtige Syntaxregeln

Der Name einer Scilab-Datei endet mit .sce. Bei Dateien, welche ausschließ-lich Scilab-Funktionen beinhalten, verwendet man die Endung .sci.

Ein Semikolon unterdruckt die Ausgabe, d.h. tippt man z.B. a=1; in dieKonsole (und druckt die enter-Taste), so merkt sich Scilab zwar, dass dieVariable a den Wert 1 hat, gibt dies aber nicht auf dem Bildschirm aus.Lasst man das Semikolon weg, so lautet die Ausgabe auf dem Bildschirm:a=1.

Alles was hinter // steht (sowohl in der Konsole als auch im Scipad),gilt als Kommentar und wird von Scilab nicht beachtet. Man sagt auch, derText ist ”auskommentiert”.

3.5 Hilfe-Browser

Mit dem Befehl help offnet sich ein Hilfe-Fenster, wo Sie Informationen zuallen Scilab-Befehlen erhalten. Durch die Eingabe help plot2d kann mansich explizit uber den Befehl der hinter help steht informieren, hier alsoplot2d.

3.6 Fehlermeldungen

Es ist eher der Normalfall, dass neu geschriebene Programme nicht auf An-hieb funktionieren. Oft verursacht schon das Fehlen eines Kommas odereine vergessene Klammer eine Fehlermeldung. Lassen Sie sich dadurch nichtentmutigen, sondern gehen Sie das Programm Schritt fur Schritt durch, so-fern die Fehlermeldung selbst nicht eine (eindeutige) Antwort darauf liefert,weshalb das Programm nicht das Gewunschte leistet.

4

Page 5: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

4 Elementare Funktionen und Operatoren

Addition, Subtraktion, Multiplikation und Division werden durch +, -, *,/ ausgedruckt. Desweiteren gibt es bei Scilab elementare (vorprogrammier-te) sowie auch benutzerdefinierte Funktionen. Auf die letzteren gehen wir inKapitel 7 ein. Zu den elementaren Funktionen gehoren z.B. die Trigonome-trischen Funktionen oder aber Funktionen, welche den Absolutbetrag einer(komplexen) Zahl oder die Fakultat einer naturlichen Zahl berechnen. ImFolgenden finden Sie einige elementare Funktionen:

• Betrag |x| einer Zahl x: abs(x)

• n-te Potenz einer Zahl x (n ∈ Z): x^n

• Quadratwurzel√

x einer Zahl x: sqrt(x)

• Sinus von x: sin(x)

• Cosinus von x: cos(x)

• Tangens von x: tan(x)

• Kotangens von x: cotg(x)

• exp(x) bzw. ex: exp(x) bzw. %e^x

• der naturliche Logarithmus von x > 0: log(x)

• zufallig generierte reelle Zahl: rand

• n! wobei n ∈ N: factorial(n)

5 Komplexe Zahlen

Scilab stellt komplexe Zahlen intern in kartesischer Form z = x + iy dar. Esist aber auch moglich, diese in Polarform z = |z|eiϕ = |z|(cos(ϕ) + i sin(ϕ))einzugeben. Die Ausgabe erfolgt allerdings stets in kartesischer Form.

Dabei ist der Winkel in Bogenmaß einzugeben, also z.B.

z=3*e^ (%i*%pi/4)

oder auch

z=2*(cos(0.5)+%i*sin(0.5)),

wobei in diesem Fall 0.5 = 0.5π · π ≈ 0.5

3.14 · π ≈ 0.16π ≈ 16π ist.

5

Page 6: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

5.1 Wichtige Befehle

Im Folgenden finden Sie einige wichtige Befehle im Zusammenhang mit kom-lexen Zahlen. Sei z ∈ C :

• imaginare Einheit i: %i

• Realteil von z: real(z)

• Imaginarteil von z: imag(z)

• Konjugierte von z: conj(z)

• Betrag von z: abs(z)

• (komplexe) Zahl zn mit n ∈ Z: z^n

• (komplexe) Zahl ez: %e^z

• Polarkoordinaten von z: [r,phi]=polar(z)

Da Scilab numerisch arbeitet, kann es beim letzten Befehl durchaus vor-kommen, dass der Winkel eine komplexe Zahl ist (wobei der komplexe Anteilaber praktisch Null ist).

Mochte man den Winkel einer komplexen Zahl ”per Hand” ausrechnen,so kann man dies mit der Eingabe

atan((imag(z),real(z)) (Bogenmaß)

bzw.

atan((imag(z),real(z))/%pi*180 (Winkelmaß)

erreichen. Der Winkel liegt dann im Bereich ±π bzw. ±180◦.

5.2 Plotten von komplexen Zahlen

Beispiel 5.1 ist ein kleines Programm, welches komplexe Zahlen als Vekto-ren (Pfeile) grafisch darstellt. Es ist sicher nicht perfekt, dafur aber leichtnachzuvollziehen. Informationen zu Scilab-Funktionen und zum Plotten imAllgemeinen (plot2d()) erhalten Sie in den Kapiteln 7 und 9. An dieserStelle reicht es aber, wenn Sie sich das Programm runterladen und als Da-tei imagplot.sci speichern. Anschießend konnen Sie sich mit dem Aufrufimagplot(z) (in der Console) die komplexe Zahl z grafisch darstellen las-sen. Durch mehrfachen Aufruf mit verschiedenen Zahlen z ∈ C lassen sichmehrere komplexe Zahlen gleichzeitig darstellen.

6

Page 7: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 5.1.

function imagplot(z)L=abs(z);plot2d([-L 0 0 0 0 L],[0 0 L -L 0 0],style=1,axesflag=5);xarrows( [0,real(z)], [0,imag(z)], L, 5 );

endfunction

Die elementare Funktion xarrows() erwartet vier Argumente: einen Vektormit x-Werten x = (x1, x2), einen Vektor mit y-Werten y = (y1, y2), die Großeder Pfeilspitze als Zahl und die Farbe des Pfeils als Zahl (siehe Kapitel 9).Die Punkte (x1, y1) und (x2, y2) werden mit einem Pfeil verbunden und ineinem Koordinatenkreuz dargestellt.

-2.0

-1.5

-1.0

-0.5

0.0

0.5

1.0

1.5

2.0

-2.0-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0

Diese Grafik wurde durch den Aufruf von imagplot(0.5*%i-1.5),imagplot(-1.5*%i+1), imagplot(%i+1.5) erzeugt.

6 Programmieren

6.1 for-Schleifen

Schleifen benotigt man, wenn Anweisungen wiederholt ausgefuhrt werdensollen. Die Schreibweise einer for-Schleife sieht folgendermaßen aus:

7

Page 8: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

• Großen, die in der Schleife geandert werden, muss man vor Beginnder Schleife einen Wert zuweisen!

• for k=m:(m+n)k ist eine Variable, m und n konnen Zahlen oder Variablen sein;k=m:(m+n) bedeutet: k = m,m + 1, ...,m + n

• Anweisungen, die wiederholt ausgefuhrt werden sollen

• end

Die Schleife wird nach n + 1 Durchlaufen verlassen.

Beispiel 6.1.

Wir berechnen die Geometrische Summen∑

k=0

xk = 1 + x + x2 + ... + xn

fur x = 12 und n = 10. Anschließend kontrollieren wir das Ergebnis mit Hilfe

der Formeln∑

k=0

xk = 1−xn+1

1−x , fur x = 1, Analysis I Skript, Beispiel 21:

n=10; //InitialisierungS=0;x=1/2;

for k=0:n //fur k=0,...,nS=S+x^k; //bei jedem Durchlauf wird x^k zu S

end //dazuaddiert

S //Ausgabe der SummeK=(1-x^(n+1))/(1-x) //Kontrolle

Die Ausgabe lautet in diesem Fall:

S =1.9990234

K =1.9990234

8

Page 9: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

6.2 if-then-else-Alternative

Diese Anweisung dient der bedingten Ausfuhrung von alternativen Pro-grammzweigen. Die Schreibweise dafur lautet wiefolgt:

• if Bedingung then

Anweisung, Anweisung,...

• evtl. Zeile(n) der Form:

elseif Bedingung then

Anweisung, Anweisung,...

• else

Anweisung, Anweisung,...

• end

Zur Formulierung der Bedingungen gibt es mehrere Moglichkeiten:

logische Operatoren: & ”und”

| ”oder”

Vergleichsoperatoren: == ”gleich”

~ = ”ungleich”

< ”kleiner als”

<= ”kleiner oder gleich”

> ”großer als”

>= ”großer oder gleich”

Beispiel 6.2.

Das folgende Programm uberpruft zunachst, ob die am Anfang einge-gebene Zahl x gleich 2 bzw. im Intervall [1, 1.5[ liegt. Ist dies der Fall,so erscheint auf dem Bildschirm: x=2 oder x ist großer gleich 1 aberkleiner als 1.5.

Ist dies nicht der Fall, wird als nachstes uberpruft, ob x ∈ [1.5,∞[ aberx = 2. Der Fall x = 2 kann hier gar nicht mehr auftreten, denn das ware

9

Page 10: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

schon im ersten Fall aufgefallen. Von daher konnte man diese Abfrage weg-lassen, falsch ist sie aber nicht. Ist x also großer als 1.5, so erscheint auf demBildschirm: Fall 2.

Ist auch dies nicht erfullt, so wird uberpruft, ob x kleiner als -1 ist, undin diesem Fall wird x<-1 ausgegeben.

In allen anderen Fallen, also wenn x ∈ [−1, 1[ ist, erhalten wir die Aus-gabe: sonst.

Da wir am Anfang x = 3 eingegeben haben, lautet in unserem Fall dieAusgabe: Fall 2.

x=3;

if x==2 | (x>=1 & x<1.5) then

’’x=2 oder x ist großer gleich 1 aber kleiner als 1.5’’

elseif x>=1.5 & x~ =2 then

’’Fall 2:’’

elseif x<-1 then

’’x<-1’’

else

’’sonst’’

end

6.3 while-Schleifen

Diese Anweisung dient der wiederholten Ausfuhrung einer Anweisung inAbhangigkeit eines boolschen Ausdrucks (Aussage). Die Schreibweise dafurlautet wiefolgt:

• while Bedingung then

Anweisung, Anweisung,...

• else

Anweisung, Anweisung,...

• end

10

Page 11: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Die Schleife wird solange durchlaufen, wie die Bedingung aus der erstenZeile erfullt ist. Nach jedem Durchlauf wird gepruft, ob diese Bedingungimmer noch erfullt ist. Ist dies (das erste mal) nicht der Fall, so springt dasProgramm zu den Anweisungen hinter else und danach wird die Schleifeverlassen.

Zur Formulierung der Bedingungen gibt es die gleichen Moglichkeiten,die in Kapitel 6.2 aufgefuhrt wurden.

Beispiel 6.3.

Das folgende Programm schreibt solange immer noch kleiner auf denBildschirm, solange die zuvor eingegebene Zahl d kleiner als die Zahl f ist.Bei jedem Durchlauf der Schleife wird der Wert von d um 1 erhoht, so dassnach geugend Durchlaufen endlich gleich auf dem Bildschirm erscheint.

d=2; f=4;

while d<f then’’immer noch kleiner’’, d=d+1;

else’’endlich gleich’’

end

Die Ausgabe lautet in diesem Fall:

ans =immer noch kleiner

ans =immer noch kleiner

ans =endlich gleich

Hatte man in diesem Beispiel die Anweisung d=d+1; vergessen, so hatteman eine Endlosschleife erzeugt, denn die Abbruchbedingung d ≥ f warenie erfullt gewesen. In diesem Fall kann man in der Konsole ”Control →abort” klicken. Dies beendet die Schleife.

11

Page 12: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

7 Scilab-Funktionen

Bei Scilab hat der/die BenutzerIn auch die Moglichkeit, eigene Funktionenzu definieren. Dateien, welche nur aus einer (oder mehreren) Funktionenbestehen, bekommen dabei die Endung .sci. Die Schreibweise lautet wiefolgt:

• function [y1,...,yn]=Funktionsname(x1,...,xm)

wobei x1,...,xm Eingabe- und y1,...,yn Ausgabegroßen sind

• Befehle zur Berechnung der Ausgabegroßen aus den Eingabegroßen

• endfunction

Im Fall von nur einer Ausgabegroße, konnen die eckigen Klammern weg-gelassen werden.

7.1 Einbinden einer Scilab-Funktion

Die entsprechende Datei wird mit ”Execute → Load into Scilab” (im Scipad)eingebunden. Anschließend kann die Funktion in der Konsole oder innerhalbeines anderen Programms aufgerufen werden.

7.2 Aufruf einer Scilab-Funktion

Dazu muss die Funktion bereits eingebunden sein! Es werden nun der Na-me der Funktion und die Variablen in runden Klammern eingeben, z.B.imagplot(%i+3). Mochte man auf die Ausgabegroße noch einmal zugreifen,so muss man sie in einer Variable abspeichern, z.B. w=MeineFunktion(x).1

Bei mehreren Ausgabevariablen muss man diese in eckigen Klammernauflisten, z.B. [r,phi]=polar(%i+1). Dabei mussen die Namen der Va-riablen nicht mit denen in der Funktion definierten ubereinstimmen; nurReihenfolge und Anzahl sind wichtig.

Beispiel 7.1 (1 Eingabegroße, 1 Ausgabegroße).

function [q]=quad(x)q=x*x;

endfunction1Eine Funktion muss nicht unbedingt einen Ruckgabert haben: Die Funktion

imagplot() z.B. erzeugt lediglich eine Grafik.

12

Page 13: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Aufruf z.B. mit s=quad(7). Wie schon erwahnt, muss man nicht die gleichenVariablen wie in der Funktionsdefinition verwenden. So ware auch der Aufrufa=quad(6) moglich.

Beispiel 7.2 (2 Eingabegroßen, 1 Ausgabegroße).

function [s]=summe(x,y)s=x+y;

endfunction

Aufruf z.B. mit s=summe(2,3).

Beispiel 7.3 (2 Eingabegroßen, 2 Ausgabegroßen).

function [s,p]=sumprod(x,y)s=x+y; p=x*y;

endfunction

Aufruf z.B. mit [s,p]=sumprod(3,4).

8 Vektoren und Matrizen

8.1 Vektoren

Mit Vektoren kann man mehrere Zahlen gleichzeitig erfassen. Die Eingabeeines Vektors sieht wiefolgt aus:

• Komponenten zwischen eckigen Klammern eingeben [ ]

• getrennt mit Kommata (oder Leerzeichen) bei Zeilenvektoren

• getrennt mit Semikolons (oder Zeilenwechseln) bei Spaltenvektoren

• es konnen auch einzelne Komponenten eingeben werden (s.u.)

Die Lange des Vektors x erhalt man beim Aufruf von length(x). Trans-ponieren eines Vektors x erreicht man durch x’. Auf die k-te Komponen-te von x kann man mit dem Befehl x(k) zugreifen, wobei k ∈ {1,2,...,length(x)}.

13

Page 14: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 8.1.

Die Befehle

a=[0 1 2];b=[0;1;2];c=[0:100];d=[0:0.1:1];e=sin(0:10);

erzeugen die Vektoren

a = (0, 1, 2), b =

012

c = (0, 1, 2, ..., 99, 100), d = (0, 0.1, 0.2, ..., 0.9, 1),

e =(sin(0), sin(1), ..., sin(9), sin(10)

).

Wenn wir einen Vektor mit erstem Eintrag x1 und letztem Eitrag xn undgenau n Eintragen erzeugen wollen, so konnen wir linspace(x1,xn,n) ver-wenden.

Beispiel 8.2.

Wir berechnen die ersten 10 Glieder der Eulerfolge (an) = (1+ 1k )n (Analysis

I Skript, Beispiel 39) und speichern diese in dem Vektor a ∈ R10. ZumSchluss lassen wir uns den Vektor a, seine Lange und zum Vergleich dieZahl e ausgeben. Wir wissen ja, dass limn→∞ an = e ist.

for k=1:10a(k)=(1+1/k)^ k; //Die Glieder der Folge werden in dem

end //Vektor a gespeichert

a //Ausgabe der Eulerfolge (als Vektor)length(a) //Ausgabe der Lange von a%e //Ausgabe der Zahl e zum Vergleich

8.2 Matrizen

Dieses Thema schneiden wir nur sehr kurz an, da fur unsere Zwecke eini-ge wenige Tatsachen ausreichend sind. Die Schreibweise sieht, am Beispiel,wiefolgt aus:

14

Page 15: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 8.3.

Die Befehle

A=[0,1;1,1;2,3]

B=[0 11 12 3]

erzeugen die gleiche Matrix A =

0 01 12 3

.

Die Anzahl der Elemente der Matrix A erhalt man beim Aufruf vonlength(A). Transponieren einer Matrix A erreicht man durch A’. Auf dasElement in der i-ten Zeile und j-ten Spalte von A, also auf Ai,j kann manmit dem Befehl A(i,j) zugreifen.

9 Grafische Darstellung - 2D

Zunachst ein kleiner Trick: Bevor mit Scilab aufwendige Grafiken gezeichnetwerden, sollte man zunachst einen einfachen Plot-Befehl ausfuhren lassen.Durch dieses ”Warmlaufen” konnen Programmabsturze verhindert werden.

9.1 Polygon (-zuge)

Bevor gezeichnet wird, sollten alte Grafiken geloscht werden:

xdel schließt alle offenen Grafikfensterclf() loscht die bisherige Grafik

Um eine zwei-dimensionale Grafik (x-y–Grafik) zu zeichnen, mussen diegewunschten x-y–Punkte in x- und y- Vektoren eingegeben werden. Daskonnte z.B. so aussehen:

x=[0 1 2 0];y=[1 0 1 1];

Diese muessen stets gleich lang sein! Der Befehl plot2d(x,y) bewirkt, dassdie Punkte samt den Verbindungslinien in die x-y–Ebene gezeichnet werden:

15

Page 16: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

0.0

0.2

0.4

0.6

0.8

1.0

0.0 0.4 0.8 1.2 1.6 2.0

Auf die weiteren Gestantungsmoglichkeiten, wie Farbe der Linien, Ach-seneinstellungen, etc. gehen wir im nachsten Kapitel ein.

9.2 Funktionsgraphen

Um die Funktion f(x) = y grafisch darzustellen, gibt es verschiedene Vor-gehensweisen: bei elementaren Funktionen kann man die x- und die ent-sprechenden y-Werte als Vektoren definieren und dann wieder plot2d()verwenden:

Beispiel 9.1.

x=[0:0.1:2];

y=sin(x);

plot2d(x,y)

0.0

0.2

0.4

0.6

0.8

1.0

0.0 0.4 0.8 1.2 1.6 2.0

Die ersten beiden Befehle erzeugen die Vektoren x=[0, 0.1, ... , 1.9,2] und y=[sin(0), sin(0.1), ... , sin(1.9), sin(2)]. Bei Scilab-Funktionen, wie z.B. sin(), ist auch sin(x) definiert, wenn x ein Vekorist: damit ist das Anwenden von sin() auf jede Komponente von x gemeint.Das Ergebnis ist also wieder ein Vektor.

Wenn aber z.B. f(x) = x · x ist, so wird Scilab eine Fehlermeldungausgeben, weil hier zwei Zeilenvektoren miteinander multipliziert werdenmussten.

16

Page 17: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

In so einem Fall kann man f als Scilab-Funktion f() definieren und denBefehl fplot2d() verwenden:

Beispiel 9.2.

x=[0:0.1:4];

function [y]=f(x)y=x*x;

endfunction

fplot2d(x,f)0

4

8

12

16

0 1 2 3 4

Diese Prozedur hatte hier mit der Definition y=x^2 umgangen werden konnen,aber z.B. bei f(x) = xex hatte man wieder das oben beschriebene Problem.Auch die Operation 1/t bereitet Probleme, denn Scilab erzeugt aus demZeilenvektor t den Spaltenvektor 1/t mit den elementweisen Reziproken.Auch in diesem Fall empfiehlt sich die o. g. Vorgehensweise.

Der Aufruf von plot2d() bzw. fplot2d() erzeugt eine Grafik, in wel-cher die plot-Punkte mit Linien verbunden werden. Dabei wird die Grafikdesto genauer sein, je ”feiner” der Vektor x ist. Man kann das Bild durchmehrfachen Aufruf aufbauen, da die alten Grafiken nicht geloscht werden,sofern man dies nicht expizit durch clf() fordert.

Eine andere Moglichkeit, die Funktion aus Beispiel 9.2 zu plotten, waredie Scilab-Funktionen feval() und plot2d zu verwenden: Die erstgenannteevaluiert im Fall der Eingabe von feval(x,f) eine (zuvor definierte) Scilab-Funktion f an den Stellen x(j) eines Vektors x, wobei j=1,...,length(x).Das Ergebnis ist also ein Vektor der gleichen Lange wie x.

Beispiel 9.3.

x=[0:0.1:4];

function [y]=f(x)y=x*x;

endfunction

y=feval(x,f);plot2d(x,y) 0

4

8

12

16

0 1 2 3 4

17

Page 18: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Dies scheint auf den ersten Blick etwas aufwendiger als zu zuvor be-schriebene Variante zu sein, hat aber den Vorteil, dass man damit Funktio-nenfamilien plotten kann, die formal von zwei Variablen abhangen:

Beispiel 9.4.

Wir mochten die Funktionenfamilie

fm(x) = x sin(mx), x ∈ [−6, 6],

fur m ∈ {1, 3, 10} plotten.

function y=f(x,m)y=x*(sin(m*x))

endfunction

x=[-6:0.1:6];

m=1;y1=feval(x,f);

m=3;y2=feval(x,f);

m=10;y3=feval(x,f);

plot2d(x,y1,style=5)plot2d(x,y2,style=4)plot2d(x,y3,style=2)

-6

-4

-2

0

2

4

6

-6 -4 -2 0 2 4 6

Dabei bewirkt style=i, dass fur die Verbindungslinien eine bestimmeFarbe bzw. Form verwendet wird. Folgende Moglichkeiten gibt es:

i=1: schwarz, i=2: blau, i=3: grun, i=4: hellblau, i=5: rot, i=6: magenta,i=7: gelb, i=0: nur die Punkte werden gezeichnet, i=-1: statt der Punkte

18

Page 19: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

werden ”+” verwendet, i=-2: statt der Punkte werden ”x” gezeichnet.Manchmal ist es sinnvoll, zwei Funktionen mit verschiedenen Stutzstellen

(x-Werten) zu verwenden. Mochte man namlich von der einen Funktion nureinige Punkte von der anderen aber den Funktionsgraphen plotten, so mussman verschiedene x-Vektoren definieren (und auch in plot2d() ubergeben).

Weitere Gestaltungsmoglichkeiten bietet der Befehl xtitle(’Titel’,’x-Achse’,’y-Achse’), mit dem man die Grafik, die x- und die y-Achse be-schriften kann. Mit xgrid(i) kann man ein Gitter einblenden lassen, wo-bei i die Farbe des Gitters definiert (Farbgebung s.o.). Durch den Befehllegend(’Funktion 1’, ’Funktion 2’, ...); lasst sich eine Legende er-zeugen.

All diese Befehle kann man auch im Zusammenhang mit fplot2d()verwenden. Daruberhinaus ist es auch moglich, xtitle(), xgrid() undlegend() in 3D-Plots einzusetzen.

Beispiel 9.5.

xdelclf()

x=[-5:0.1:5];

function y=f1(x)y=x^ 2+x^ 3;

endfunction

function y=f2(x)y=x^ 2;

endfunction

fplot2d(x,f1,style=5)fplot2d(x,f2,style=2)

xgrid(3)legend(’x^ 2+x^ 3’,’x^ 2’);xtitle(’Zwei Polynome’,’x-Achse’,’y-Achse’)

19

Page 20: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

-100

-50

0

50

100

150

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

x-Achse

y-Achse

x^2+x^3

x^2

Zwei Polynome

9.3 m × n - Grafik - Matrix

Mit Hilfe der Scilab-Funktion subplot() lasst sich eine m × n - Grafik-Matrix erzeugen, d.h. in einem einzigen Fenster werden in m Zeilen und nSpalten m ·n Grafiken gezeichnet. Der dritte Parameter in subplot(m,n,s)bestimmt die Position in der Matrix.

Beispiel 9.6.

xdel //schließt alle offenen Grafikfensterclf() //loscht die bisherige Grafik

x=[0:0.1:10]; //x=[0, 0.1, 0.2, ... ,9.8, 9.9, 10]

y1=sin(x); //y1=[sin(0), sin(0.1), ... , sin(10)]y2=cos(x); //y2=[cos(0), cos(0.1), ... , cos(10)]

20

Page 21: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

// Grafik 1: - - - - - - - - - - - - - - - - - - - - - - -

subplot(2,1,1) //erzeugt eine 2x1-Grafik-Matrix;//der nachstehende plot-Befehl ist fur//die obere (=erste) Grafik

plot2d(x,y1,style=5) //plottet die Punkte (0,sin(0)),//(0.1,sin(0.1)), ..., (10,sin(10))//samt Verbindungslinien in rot

// Grafik 2: - - - - - - - - - - - - - - - - - - - - - - -

subplot(2,1,2) //der nachstehende plot-Befehl ist fur//die untere (=zweite) Grafik

plot2d(x,y2,style=2) //plottet die Punkte (0,cos(0)),//(0.1,cos(0.1)), ..., (10,cos(10))//samt Verbindungslinien in blau

-1.0

-0.6

-0.2

0.2

0.6

1.0

0 1 2 3 4 5 6 7 8 9 10

-1.0

-0.6

-0.2

0.2

0.6

1.0

0 1 2 3 4 5 6 7 8 9 10

21

Page 22: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

9.4 2D-Kurven

Der Befehl zum Plotten einer Kurve

γ : [a, b] → R2, t 7→

(x(t)y(t)

)= γ(t)

ist plot2d(x,y), wobei x und y gleich lange Vektoren sind, welche die Funk-tionswerte von x(t) und y(t) enthalten. Hier kann man wieder die weiterenOptionen verwenden, welche in Kapitel 9.2 beschrieben sind.

Beispiel 9.7.

Wir mochten die Kurve

γ(t) =(

cos(t)t

), t ∈ [0, 6π]

grafisch darstellen.

xdelclf()

t=[0:0.1:6*%pi];

plot2d(cos(t),t)

0

2

4

6

8

10

12

14

16

18

20

-1 0 1

Handelt es sich bei den Komponenten um kompliziertere Funktionen,so muss man diese erst als Scilab-Funktionen schreiben und dann mit Hilfevon feval() auswerten lassens. Diese evaluiert eine (zuvor definierte) Scilab-Funktion f an den Stellen t(j), wobei j=1,...,length(t). Das Ergebnisist also ein Vektor der gleichen Lange wie t.

22

Page 23: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 9.8.

Wir mochten die Kurve

γ(t) =(

t cos(t)t sin(t)

), t ∈ [0, 25]

grafisch darstellen.

xdelclf()

t=[0:0.1:25];

function x=f1(t)x=cos(t)*t;

endfunction

function y=f2(t)y=sin(t)*t;

endfunction

x=feval(t,f1);y=feval(t,f2);

plot2d(x,y)

-25

-20

-15

-10

-5

0

5

10

15

20

25

-25 -15 -5 5 15 25

9.5 Hohenlinien

Die Hohenlinien Hc einer Funktion f : D ⊂ R2 → R, (x, y) 7→ f(x, y) zueinem Niveau c ∈ R sind Teilmengen des R2, namlich

Hc = {(x, y) ∈ D ⊂ R2 | f(x, y) = c }.

Der Graph einer solchen Funktion liegt allerdings im R3.

Zum Zeichnen von Hohenlinien einer Funktion f gibt es bei Scilab denBefehl fcontour2d(). Der optionale Parameter i in fcontour2d(x,y,f,i)bestimmt dabei die Anzahl der gezeichneten Hohenlinien; x und y sindgleichlange Vektoren.

23

Page 24: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 9.9.

Das folgende Programm zeichnet sieben Hohenlinien der Funktion f(x, y) =x2 − y2 auf dem Bereich [−5, 5]× [−5, 5]. Da diese Grafikfunktion sehr zeit-aufwendig ist, wahlen wir lediglich 0.5 als Schrittweiten fur die Vektoren.

xdelclf()

x=[-5:0.5:5];y=[-5:0.5:5];

function z=f(x,y)z=x^ 2-y^ 2;

endfunction

fcontour2d(x,y,f,7)

-5

-4

-3

-2

-1

0

1

2

3

4

5

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

-18.8

-18.8

-12.5

-12.5

-6.25

-6.25

0 0 6.25 6.25 12.5 12.5 18.8 18.8

9.6 2D-Vektorfelder

Die grafische 2D-Darstellung eines Vektorfeldes

f(x, y) =(

u(x, y)v(x, y)

), (x, y) ∈ D ⊂ R2

kann mithilfe des Befehls champ(x,y,U,V) erfolgen. Dabei sind x,y ∈ Rk dieVektoren der Lange k mit den x- und y-Werten und U,V ∈ R

k×k Matrizenmit U(i,j)= u(x(i), y(j)) und V(i,j)= v(x(i), y(j)), also die Komponen-ten des Vektorfeldes am Punkt (x(i),y(j)). Diese Matrizen bekommenwir mit Hilfe des Befehls feval(x,y,func), wenn wir fur func jeweils dieKomponenten der Funktion f einsetzten.

24

Page 25: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 9.10.

Gegeben sei das Vektorfeld

f(x, y) =(

cos(x)sin(y)

), (x, y) ∈ [−7, 7] × [10, 10].

Mit dem folgenden Programm konnen wir es grafisch darstellen lassen:

xdelclf()

x=[-7:7];y=[-10:10];

function u=f1(x,y)u=cos(x);

endfunction

function v=f2(x,y)v=sin(y);

endfunction

U=feval(x,y,f1);V=feval(x,y,f2);

champ(x,y,U,V)-10

-8

-6

-4

-2

0

2

4

6

8

10

-8 -6 -4 -2 0 2 4 6 8

9.7 Flachen in der Ebene

Um parametrisierte Flachen in der Ebene zu plotten, verwenden wir denBefehl plot(). Dazu schreiben wir die Komponenten der Funktion

x(r, s) =(

x(r, s)y(r, s)

), r ∈ [a, b], s ∈ [c, d],

25

Page 26: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

als Scilab-Funktionen x und y und werten diese mit dem Befehl feval(r,s,x),etc. aus. Wie schon in Kapitel 9.6 erklart, ist das Ergebnis jeweils eine Ma-trix, welche die Funktionswerte an den Stellen (r(i),s(j)) enthalt. Dabeisind r und s Vektoren, die den Intevallen [a, b] bzw. [c, d] entsprechen. Diesesollten mit Hilfe von linspace() erstellt werden. Denn verwendet man z.B.im Fall φ ∈ [−π, π] die Definition phi=[-%pi:0.05:%pi], so entsteht in derGrafik ein Spalt bei φ = π.

Beispiel 9.11.

Wir mochten den Kreisring plotten, der durch die Parametrisierung

x(r, φ) =(

r cos(φ)r sin(φ)

), φ ∈ [−π, π], r ∈ [0.5, 1]

gegeben ist.

xdelclf()

phi=linspace(-%pi,%pi,50);r=linspace(0.5,1,100);

function u=x(phi,r)u=r*cos(phi);

endfunction

function v=y(phi,r)v=r*sin(phi);

endfunction

U=feval(phi,r,x);V=feval(phi,r,y);

plot(U,V)

0.6

0.4

0.6

0.8

-1.0 0.2

1.0

-0.2 1.0

0.2

0.0

-0.2

-0.4

-0.6

-0.8

-1.0

-0.6

Wer gerne lieber einen schwarzen Kreisring hatte, moge den Plot-Befehlplot2d(U,V, style=[ones(100,1)]) verwenden.

26

Page 27: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

10 Grafische Darstellung - 3D

Beim Erstellen von 3D-Grafiken kann wieder der Befehl subplot() verwen-det werden.

Die optionalen Parameter der einzelnen Plot-Befehle werden hier nichtim einzelnen erortert und auch nicht zur Bearbeitung der Hausaufgabenbenotigt. Informieren Sie sich ggf. im Help-Browser daruber, indem Sie z.B.help plot3d in die Konsole eingeben, siehe Kapitel 3.5.

Die in Kapitel 9.2 beschriebenen Grafik-Befehle xtitle(), legend()und xgrid() konnen aber auch in 3D-Grafiken eingesetzt werden.

10.1 Funktionsgraphen

Sei f : D ⊂ R2 → R. Ahnlich wie in Kapitel 9.2 definiert man einen ”De-finitionsbereich”, eine Scilab-Funktion f() und verwendet dann die Scilab-Funktion fplot3d().

Dabei mussen die Vektoren, welche den Definitionsbereich charakterisie-ren nicht die gleiche Lange haben.

Beispiel 10.1.

Wir plotten den Graphen der Funktion

f(x, y) = x2 + y2, (x, y) ∈ [−5, 5] × [−5, 5].

xdelclf()

x=[-5:0.1:5];y=[-5:0.1:5];

function z=f(x,y)z=x^ 2+y^ 2;

endfunction

fplot3d(x,y,f)

27

Page 28: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 10.2.

Wir plotten den Graphen der Funktion

f(x, y) = x + y, (x, y) ∈ [−5, 5] × [−5, 5].

xdelclf()

x=[-5:0.1:5];y=[-5:0.1:5];

function z=f(x,y)z=x+y;

endfunction

fplot3d(x,y,f)

Hier bietet es sich an die Grafik zu drehen (oben links ª im Grafik-Fenster):

Beispiel 10.3.

In diesem Beispiel mochten wir die Funktion

f(x, y) =1

x2 + y2

auf dem Bereich [−5, 5] × [−5, 5] plotten. Das Problem dabei ist, dass dieFunktion bei (0, 0) gar nicht definiert ist. Dies ist aber auch der einzige kriti-

28

Page 29: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

sche Punkt. Mit einem Trick lasst sie sich doch auf diesem Bereich darstellen:Wir definieren die Vektoren x = y = (−5,−4.89,−4.78, ...,−0.16,−0.05, 0.06,..., 4.79, 4.9). Damit wird die Funktion nicht an dem kritischen Punkt aus-gewertet aber dennoch auf dem ”ganzen” Bereich dargestellt:

xdelclf()

x=[-5:0.11:5];y=[-5:0.11:5];

function z=f(x,y)z=1/(x^ 2+y^ 2);

endfunction

fplot3d(x,y,f)

Eine andere Moglichkeit ware den Definitionsbereich aufzuteilen, und dieFunktion auf den unkritischen Bereichen durch mehrfachen Aufruf des Plot-befehls zu zeichnen.

10.2 3D-Kurven

Zum Zeichnen einer Kurve

γ : [a, b] → R3, t 7→ γ(t) =

x(t)y(t)z(t)

gibt es bei Scilab den Befehl param3d(x,y,z), wobei x, y und z gleichlangeVektoren sind, welche die Funktionswerte von x(t), y(t) und z(t) enthalten.

Beispiel 10.4.

Wir mochten die Kurve

γ(t) =

cos(t)sin(t)

t

, t ∈ [0, 8π]

29

Page 30: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

grafisch darstellen. (Die folgende Grafik haben wir geeignet gedreht.)

xdelclf()

t=[0:0.1:8*%pi];

param3d(cos(t),sin(t),t)01

-10 0X

Y-1 1

5

10

Z15

20

25

30

Wie schon in Kapitel 9.2 beschrieben, wird Scilab eine Fehlermeldungausgeben, wenn man z.B. param3d(sin(t),cos(t),t*t) eingeben wurde,denn dies wurde bedeuten, dass zwei (Zeilen-) Vektoren miteinander multi-pliziert werden mussten. Abhilfe kann man mit der Scilab-Funktion feval()schaffen, welche eine (zuvor definierte) Scilab-Funktion f an den Stellent(j), wobei j=1,...,length(t) evaluiert. Das Ergebnis ist also ein Vektorder gleichen Lange wie t.

Es konnen auch noch andere Probleme auftreten: So ergibt z.B. die Mul-tiplikation 1/t*cos(t), wobei t=[0:0.1:5], eine Matrix, denn aus dem Zei-lenvektor t macht Scilab einen Spaltenvektor 1/t. Multiplikation mit einemZeilenvektor ergibt dann eine Matrix.

Daher ist das oben beschriebene Verfahren fur kompliziertere Funktionenimmer sinnvoll.

Beispiel 10.5.

Wir plotten die Kurve

γ(t) =

t cos(t)t sin(t)

t

, t ∈ [0, 50].

30

Page 31: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

xdelclf()

t=[0:0.1:50];

function x=f1(t)x=t*cos(t);

endfunction

function y=f2(t)y=t*sin(t);

endfunction

x=feval(t,f1);y=feval(t,f2);

param3d(x,y,t)

Z

0

5

10

15

20

25

30

35

50

40

45

50

-500

X 0

Y-50 50

10.3 Flachen im Raum

Um parametrisierte Flachen im Raum zu plotten, kann man den Befehlplot3d2() verwenden. Dazu schreibt man die Komponenten der Funktion

x(r, s) =

x(r, s)y(r, s)z(r, s)

, r ∈ [a, b], s ∈ [c, d],

als Scilab-Funktionen x,y,z und wertet diese mit dem Befehl feval(r,s,x),etc. aus. Wie schon in Kapitel 9.6 erklart, ist das Ergebnis jeweils eine Ma-trix, welche die Funktionswerte an den Stellen (r(i),s(j)) enthalt. Dabeisind r und s Vektoren, die den Intervallen [a, b] bzw. [c, d] entsprechen. Diesesollten mit Hilfe von linspace() erstellt werden. Denn verwendet man z.B.im Fall ϕ ∈ [−π, π] die Definition phi=[-%pi:0.05:%pi] wahlt, so entstehtin der Grafik ein Spalt bei ϕ = π. 2

2Eine elegantere Variante ist es, die Befehle plot3d und eval3dp() zu verwenden. Diesewerden wir hier aber nicht vorstellen.

31

Page 32: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 10.6.

Wir mochten die Kugeloberflache plotten, welche als parametrisierte Flache

x(ϕ, θ) =

sin(θ) cos(ϕ)sin(θ) sin(ϕ)

cos(θ)

, ϕ ∈ [−π, π], θ ∈ [0, π]

gegeben ist.

xdelclf()

phi=linspace(-%pi,%pi,50);theta=linspace(0,%pi,50);

function u=x(phi,theta)u=sin(theta)*cos(phi);

endfunction

function v=y(phi,theta)v=sin(phi)*sin(theta);

endfunction

function w=z(phi,theta)w=cos(theta);

endfunction

U=feval(phi,theta,x);V=feval(phi,theta,y);W=feval(phi,theta,z);

plot3d2(U,V,W)

32

Page 33: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

11 Integration

11.1 Integration-1D

Istf : [a, b] → R

eine stetige Funktion, so kann man mit dem Befehl intg(a,b,f) naherungs-weise das Integral von f auf dem Intervall [a, b] berechnen. Dazu muss manf als Scilab-Funktion schreiben.

Beispiel 11.1.

Seif(x) = x2, x ∈ [0, 2].

Per Hand ausgerechnet ergibt das gesuchte Integral den Wert 8/3. Mit Scilabgeht das so:

function y=f(x)y=x^ 2

endfunction

intg(0,2,f)

Das Ergebnis mit Scilab ist 2.6666667, also naherungsweise 8/3.

11.2 Integration-2D

Fur Integrale auf einem Rechteck [a, b] × [c, d] ⊂ R2 gibt es bei Scilab denBefehl int2d(X,Y). Dazu muss man das Rechteck zunachst in 2 Teildreiecke3

zerlegen. Die Matrizen X und Y enthalten dabei die x- und y-Koordinatender Eckpunkte der Dreiecke und sind vom Format 3 × 2.

Besondere Vorsicht ist allerdings bei uneigentlichen Integralen geboten.Hier kann das Ergebnis sehr ungenau werden. Mehr Informationen zu diesemBefehl und dessen weiteren Parametern erhalten Sie im Hilfe Browser (helpint2d).

3Das Rechteck kann auch in n > 2 Dreiecke zerteilt werden; dann sind die Matrizen X

und Y vom Format 3×n. Eine Unterteilung in mehr als 2 Dreiecke kann notwendig werden,wenn das Gebiet, uber welches man integriert, kein Rechteck sondern zum Beispiel einFunfeck ist.

33

Page 34: Scilab-Skript · 1 Uber dieses Skript¨ Dieses kurze Scilab-Skript ist f¨ur die TeilnehmerInnen der Analysis I und II f¨ur Ingenieure gedacht und soll einen Uberblick¨ ¨uber die

Beispiel 11.2.

Seif(x, y) = cos(x + y), (x, y) ∈ [0, π] × [0, π].

function z=f(x,y)z=cos(x+y)

endfunction

X=[0 0%pi %pi%pi 0];

Y=[0 00 %pi%pi %pi];

int2d(X,Y,f)

0.5

1.0

1.5

2.0

2.5

3.0

3.5

0.00 1.17 2.33 3.50

Eine andere Moglichkeit, so ein Integral zu berechnen ist, das Doppelinte-gral auf zwei Einfachfachintegrale zuruckzufuhren. Dies wird hier allerdingsnicht beschrieben sondern Teil einer Hausaufgabe sein. Diese Vorgehensweiseist auch sinnvoll, wenn der Bereich B, auf welchem die Funktion f integriertwerden soll, nicht in Teildreiecke zerlegbar ist, aber von der Form

B = {(x, y) ∈ R2 | a ≤ b ≤ x, α(x) ≤ y ≤ β(x)}

bzw.B = {(x, y) ∈ R2 | a ≤ b ≤ y, α(y) ≤ x ≤ β(y)}

ist.

34