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