# Ein Beispiel-Skript zum Erstellen der Bilder auf der ersten Folie des ersten Sondertutoriums

clear('y'); # Vielleicht haben bestimmte Variablen bereits vor dem Aufruf eines Skriptes einen Wert erhalten. Es kann sein, dass ein Skript von diesen Werten abhaengt. Damit bei jedem Aufruf des Skripts dasselbe passiert, sollte man, sollte man seine Variablen initialisieren (also mit einem anfaenglichen Wert belegen) und/oder loeschen und danach neu belegen (wie hier mit der clear Anweisung).

# Plot 1: Wir wollen ein Polynom auf einem Gitter auswerten

# Fuer den Plot erstellen wir ein aequidistantes Gitter, in Octave sieht das dann so aus:
x=1.2:0.01:2.8; # Gitter fuer den Plot. Gleichzeitig ein liegender Vektor.

# Jetzt muessen wir zu jedem Punkt des Gitters einen Funktionswert berechnen
for i=1:length(x) # Es wird i=1 gesetzt und danach alles bis zum "endfor" ausgefuehrt. Dann gehts mit i=2 weiter. Im letzten durchlauf hat man hier i=161.
	t=x(i); # Weise t den Wert des aktuellen Gitterpunktes zu
	y(i)=4*(t-1.4)*(t-2)*(t-2.2)*(t-2.5); # Werte das Polynom an der aktuellen Stelle t aus und speichere diesen Wert in dem Vektor y. y wird also sukkzessiv aufgebaut.
endfor

figure; # Bewirkt, dass die naechste Zeichenanweisung ein neues Fenster oeffnet
plot(x,y) # Zeichne die Funktion (ohne irgendwelche weiteren Optionen)
# plot(x,y,';some polynom;'); # Ein Beispiel fuer einen plot-Aufruf mit einer Option, entspricht nicht dem Bild auf der Folie, deshalb hier mal auskommentiert.

axis([1.2 2.8 -0.2 0.2]); # Bewirkt, dass nur noch ein Teilbereich angezeigt wird. Syntax: axis ([xStart xEnde yStart yEnde]); (2 Argumente pro Dimension).

print -deps -color ~/jobs/potenzfunktion.eps # Speichert den Plot als Datei auf der Festplatte
# - im Verzeichnis "~/jobs/". Ihr wuerdet hier also vielleicht "C:\programme\octave\work" angeben
# - unter dem Namen "potenzfunktion.eps"
# - in Farbe (standard ist schwarz-weiss)
# - als eine Datei im "eps"-Format. Man beachte, dass das Format nichts mit der Dateiendung zu tun hat!


# Plot 2: f(x,y)=sin(x)*sin(y), ausgewertet auf einem aequidistanten Gitter

x=linspace(-2*pi,2*pi,50); # Unterteilt den Bereich von -2*pi bis 2*pi in 50 Teile. Zum Vergleich:
# x= -2*pi:4*pi/49:2*pi; # Diese Zeile wuerde ein anderes Egebnis liefern!
y=sin(x); # Achtung: Hier haben wir es mit einer Kurzschreibweise zu tun, die uns das Leben leichter machen soll. Die Sinusfunktion wird auf jeden Eintrag des Vektors x angewendet, damit ist y also auch einer!
z=y'*y; # Hier werden die tatsaechlichen Funktionswerte berechnet und in einer Matrix gespeichert. Es sollte gelten: z(i,j)=sin(x(i),x(j)). Nicht verwirren lassen, dass hier 2mal x steht. Die Unterteilung entlang der y-Achse entspricht nunmal der entlang der x-Achse und wozu doppelt Speicher vebrauchen?

figure;
mesh(x,x,z); # Argumente: x-Achsenunterteilung, y-Achsenunterteilung und zugehoerige Funktionswerte

print -deps -color ~/jobs/sinusgebirge.eps # wie eben


