Schreiben Sie eine MATLAB-Funktion regpol.m, die folgende Aufgaben erfüllt. Für eine vorgegebene Kantenlänge soll das Volumen , die Oberfläche , der Radius der umbeschriebenen Kugel und der Radius der einbeschriebenen Kugel wahlweise für einen der 5 regulären konvexen Polyeder berechnet werden:
Der Aufruf der Funktion soll folgendermaßen erfolgen:
[V,F,R,r] = regpol(typ,a)Das Programm soll für einen Vektor von -Werten funktionieren und gleichlange Vektoren mit den Resultaten für , , und zurückgeben. Mit der String-Variablen typ soll der Typ des regulären Polyeders übergeben werden. Im Programm soll zur Unterscheidung der Fälle die switch-Konstruktion verwendet werden:
switch lower(typ(1)) case 't' ... case 'w' ... ... endÜberlegen Sie, welche Zeichenkette man als typ eingeben kann, was typ(1) bewirkt, und was der Befehl lower dabei bewirkt.
Stellen Sie auch den Unterschied zwischen folgenden Aufrufen der Funktion fest und versuchen Sie das Verhalten zu verstehen.
regpol(typ,a) V = regpol(typ,a) [V,F] = regpol(typ,a) [V,F,R] = regpol(typ,a) [V,F,R,r] = regpol(typ,a)
Schreiben Sie eine MATLAB-Funktion kegelpol, welche die Polargleichung von den Kegelschnitten Ellipse, Hyperbel und Parabel in Hauptachsenlage auswertet. Der Aufruf sollte mit
r = kegelpol(typ,phi,a,b)erfolgen, wobei typ der Typ des Kegelschnitts ist, phi ein Vektor von -Werten, und a und b Konstanten zur Beschreibung des Kegelschnittes sind. Diese Werte werden der Funktion vom MATLAB-Skript skegelpol (siehe unten) übergeben. Der Vektor phi ist also ein Übergabeparameter und wird nicht in der Funktion selbst erzeugt. Vergessen Sie nicht die Verwendung der richtigen Operatoren.
Die Formeln für die drei Kegelschnitte lauten:
r_0
festgelegt werden.
Den -Vektor können Sie mit dem Befehl linspace
erzeugen:
phi = linspace(phi_min,phi_max,n_points)Die Winkel für Ellipse, Hyperbel und Parabel reichen dabei von bis zum Maximalwert ,
Um zu sehen, ob Sie wirklich eine Ellipse, Hyperbel, bzw. Parabel berechnen, können Sie dabei folgende Plotbefehle ausführen:
figure(1) % Ellipse polar(phi,r); figure(2) % Hyperbel polar(phi,r); hold on; polar(pi-phi,r); hold off; figure(3) % Parabel polar(phi,r);Überlegen Sie, warum man in einem Fall zwei Plotbefehle braucht, um den gesamten Kegelschnitt zu zeichnen. Der Befehl hold ermöglicht, dass man zu einer bereits bestehenden Kurve weitere hinzufügt. Man schaltet diesen Modus mit hold on ein und mit hold off aus. Überlegen Sie auch, wie groß man den Wert für
n_points
setzen muss,
damit man vernünftige Kurven erhält.
Winfried Kernbichler 2005-04-26