scschleife.m, scpeaks3.m, sczykloide.m
Diese Skripts dienen zum Testen der zu erstellenden Funktionen und stellen die Ergebnisse außerdem graphisch dar. Abzugeben sind fünf MATLAB-Funktionen und ein kleines Skript:
schleife.m, peaks3.m, peaks3a.m, epizykloide.m, hypozykloide.m,
scinttest.m
Die einzelnen Funktionen sind relativ kurz und sollen das Wissen um Funktionen und Operatoren festigen.
!uebungsdaten
geladen werden. Die Übungsnummer ist 5.
Voraussetzung für die Übung sind vor allem die Kapitel 7 und 4 und die entsprechenden Diskussionen in der Vorlesung.
Die folgende Funktion und ihre Ableitung soll in Form einer MATLAB-Funktion schleife.m programmiert werden:
Der Aufruf für das Programm erfolgt mit
[y1,dy1] = schleife(x,a),
wobei außerhalb des Gültigkeitsbereichs von 12.45 NaN zurückgegeben werden soll. Die Variable x ist ein Vektor und
a ist ein Skalar. Die Outputgrößen sollen Felder der gleichen Größe
wie x sein. Die Werte für und
brauchen
nicht zurückgegeben zu werden.
Die mögliche Fehlermeldung bei der Divison durch 0 an der Bereichsgrenze kann mit Hilfe der Befehle warning('off') und warning('on') vor und nach der betreffenden Zeile im Programm verhindert werden.
Die folgende Funktion soll in Form einer MATLAB-Funktion peaks3.m
programmiert werden:
Der Aufruf für das Programm erfolgt mit
[xx,yy,zz] = peaks3(x,y,a), bzw. mit
[zz] = peaks3a(xx,yy,a).
Die Variable a enthält die Parameter in Form eines Vektors.
Die Variablen x und y sind auch Vektoren, wobei die Funktion
für alle Kombinationen von x und y berechnet werden soll. Dazu
wird zuerst der Befehl meshgrid
verwendet, mit dem zwei gleich
große Matrizen xx und yy erzeugt werden (siehe dazu auch
3.4.3 und insbesonders
3.1).
Mit diesen Matrizen für xx und yy sollte nun die zweite
Funktion gerufen werden. Bevor man nun die Formel für zz auswerten
kann, muß man noch mit Hilfe des Befehls mod
aus xx und
yy die neuen Variablen xh und yh (
)
berechnen. Dadurch wird die Periodizität 12.47
sichergestellt. Diese Matrizen enthalten nun alle Werte um damit die
Formel 12.46 auszuwerten. Überlegen Sie, welche Operatoren
Sie verwenden müssen.
Falls keine Werte für x und/oder y übergeben werden, sollten
als Defaultwert 49 Punkte im Intervall
verwendet werden
(linspace). Falls vom Dreiervektor a keine oder zuwenige
Werte übergeben werden, sollten die fehlenden Werte auf
gesetzt werden.
Zykloiden (Rollkurven) sind Kurven, die dadurch entstehen, dass ein Kreis
K auf einer Leitkurve L abrollt ohne zu gleiten. Bezeichnet M
einen Punkt auf der Peripherie des Kreises K, so beschreibt M bei
dieser Bewegung eine Zykloide. Ist C der Mittelpunkt von K und
M ein Punkt auf der Verbindungsstrecke CM, so beschreibt
M
eine verkürzte Zykloide. Liegt M
außerhalb des
Kreises auf der Verlängerung von CM, so beschreibt M
eine
verlängerte Zykloide.
Ist die Leitkurve L ebenfalls ein Kreis, so spricht man von Epizykloiden, wenn der Kreis K auf der Außenseite abrollt, und von Hypozykloiden, wenn der Kreis K auf der Innenseite abrollt.
Ist der Radius des rollenden Kreises K,
der Radius der
Leitkurve L und
der Verlängerungs- bzw. Verkürzungsfaktor,
so gilt für die Parameterdarstellung der Epizykloide,
Für die Hypozykloide gilt,
Zu programmieren sind nun zwei Funktionen
[x,y] = epizykloide (b,p,q,l,n) und
[x,y] = hypozykloide(b,p,q,l,n),
wobei hier l für steht. Mit n wird die Länge der
Vektoren x und y angegeben.
Die Minimalversion der Funktionen muß nun (linspace),
,
und damit dann
und
berechnen.
Weiters sollte man noch die Anzahl der Inputvariablen überprüfen und
Defaultwerte setzen, ,
,
,
und
.
Zusätzlich sollte man die Zulässigkeit der Werte für die Inputvariablen
überprüfen (nargin) und gegebenfalls Fehlermitteilungen
(error) schreiben. Man kann auch durch Anwendung des Befehls
floor
sicherstellen, dass
und
als ganzzahlige Werte
verwendet werden. Damit stellt man sicher, dass sich die Kurve jeweils am
Ende schließt.
Einige typische Beispiele können Sie hier sehen:
Schreiben Sie ein kleines Skript scinttest.m das die Integrale
Verwenden Sie dazu die MATLAB-Funktionen quadl und dblquad. Bedienen Sie sich der MATLAB-Hilfe bzw. des Kapitels 7.1.8 um herauszufinden, wie diese Integrationsroutinen funktionieren. Überlegen Sie auch, ob Sie im zweiten Fall peaks3 oder peaks3a verwenden müssen.
Geben Sie die berechneten Größen von Fläche und Volumen mit disp formatiert aus.
Winfried Kernbichler 2005-04-26