Informatik Programmieren in MATLAB Georg Richter Aufgabe 8: Bierschaumzerfall (zum Auf- und Erwärmen) Für manch einen (selbstverständlich nicht für jeden) gilt an heißen Tagen eine maßvoll gefüllte Hopfenkaltschale als ein nicht zu unterschätzender Beitrag zur Steigerung der Lebensqualität. Der langsame Zerfallsprozess der einst stattlichen Schaumkrone dieses gesunden Getränks kennzeichnet nicht nur fortschreitende Konsumbereitschaft, sondern lässt sich sogar (im großen und ganzen) berechnen, da er mit dem radioaktiven Zerfall eine interessante Gemeinsamkeit hat: beide laufen nach derselben Gesetzmäßigkeit ab (womit die Gemeinsamkeiten aber auch schon erschöpft sein dürften). Das den Zerfallsprozess beschreibende Gesetz hat folgende Gestalt: ln t _ ende = t _ halb ( h _ ende) ln( ln( 2) ) h _ 0 ln ist dabei der natürliche Logarithmus, d.h. der Logarithmus zur Basis e. Zur Erinnerung: Die benötigte Logarithmus-Funktion heißt in MATLAB log. Weiterhin ist t_halb: Halbwertszeit, d.h. die Zeit, in der die Hälfte der Schaumkrone zerfallen ist [in s] h_0: die Anfangshöhe der Krone [in cm] h_ende: die Höhe, wenn nur noch eine Lage Bläschen übrig ist (also kurz vor dem endgültigen Aus): Meßwert 0,002 m = 0,2cm t_ende: die Zeit des Zerfalls vom Beginn mit Schaumkrone der Höhe h_0 bis Höhe h_ende In selbstlosen Freilandversuchen wurden im Dienste der Wissenschaft in Abhängigkeit von der Biersorte für sparsame 0,4-Liter-Gläser folgende Halbwertszeiten empirisch ermittelt: Weizenbier: 60 s Pils 75 s Dunkelbier 90 s Weitere Sorten konnten leider nicht berücksichtigt werden.
Schreiben Sie ein Programm, daß in Abhängigkeit von der gewählten Biersorte und Anfangshöhe der Schaumkrone als Ergebnis die Zerfallszeit t_ende ausgibt. Programmorganisation: Bevor die eigentliche Berechnung stattfindet, ist viel Verwaltungsarbeit zu erledigen, um das Programm einigermaßen komfortabel zu gestalten. Zunächst wird der Benutzer gefragt, welche Biersorte er wünscht. Als Auswahl stehen die drei Sorten zur Verfügung:. Weizen 2. Pils 3. Dunkel 0: er mag gar kein Bier das Programm versucht s dann gar nicht erst weiter und bricht ab. Sichern Sie bei der Auswahl so ab, dass erlaubte Eingabewerte wirklich nur die Zahlen 0,, 2 oder 3 sind. Bei falscher Eingabe also um Wiederholung bitten oder bei Eingabe 0 beenden. Sofern die Sorte gewählt wurde (diese also insbesondere von Null verschieden ist), erkundigt sich das Programm als nächstes nach der Anfangshöhe der Schaumkrone in Zentimetern. Dann ermitteln Sie (endlich) in Abhängigkeit der gewählten Sorte die dazugehörige Halbwertszeit und berechnen die Zerfallszeit. Diese geben Sie dann mit einem netten Antwortsatz aus. Zu guter Letzt fragt das Programm den Anwender auf erneuten Durchlauf. Wenn gewünscht, startet es erneut, wenn nein, wird es wie im Fall der Auswahl Sorte 0 beendet. Variation zur Aufgabenstellung (optional): Wenn in der Vorlesung bereits Function-Files besprochen worden sein sollten, lagern Sie die (der Übung wegen) die eigentliche Berechnung der Zerfallszeit in eine Funktion aus: function t = zerfall (sorte, hoehe) 2
Aufgabe 9 Approximation eines Widerstandes. Es ist ein MATLAB-Programm zu entwickeln, daß folgendes Problem löst: Ein beliebiger Widerstand im Bereich von 0.5 Ohm bis Megaohm soll durch folgende Schaltung aus 3 Normwiderständen (R, R, R ) hergestellt werden: 2 3 Es stehen folgende Normwiderstände der Reihe E2 zur Verfügung:.2,.5,.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2, 0 Ohm, usw. bis MOhm. Ihr Programm fragt den Eingeber nach dem Wunschwiderstand (in Ohm), der durch die obige Schaltung möglichst genau mittels der Normwiderstände ermittelt werden soll. Danach ermittelt es die optimale Zusammensetzung der drei Normwiderstände; optimal bedeutet, daß der Gesamtwiderstand der drei Normwiderstände möglichst dicht am Wunschwiderstand liegt. Möglichst dicht kann bedeuten, daß er etwas größer als der Wunschwiderstand ist oder etwas kleiner jedoch der Abstand dazu eben minimal ist. Diese optimale Kombination gibt das Programm aus mit der zusätzlichen Information, wie groß der Gesamtwiderstand der drei bestimmten Normwiderstände ist und wie viel die prozentuale Abweichung zum Wunschwiderstand beträgt (also Verhältnis ermittelter Gesamtwiderstand zu Wunschwiderstand). Dann fragt anschließend, ob noch ein weiterer Durchlauf gewünscht wird. Wenn nein, wird es beendet. Eine Primitivlösung ist, einfach drei Schleifen zu schreiben, die alle möglichen Kombinationen durchgeht. Diese sollen Sie hier realisieren (und damit Schleifen üben). Wenn Ihnen die langsame Lösung zu langsam ist es gibt eine Variante. Siehe nächste Aufgabe. 3
Aufgabe 0 (for freaks only) noch mal die Schaltung aus Aufgabe 9 Sie werden sicherlich bei Lösen der Aufgabe 9 bemerkt haben, dass die Durchlaufzeit eines Programmablaufs recht lange dauert. Daher ist eine effizientere Lösung sicher angebracht. Diese können Sie jetzt implementieren. Eine solche Lösung besteht darin, daß man das Problem zunächst auf ein analoges Teilproblem zerlegt, dieses löst und mit der ermittelten Lösung des Teilproblems zum Ausgangsproblem zurückkehrt. Eingegeben ist also der Wunschwiderstand R W ; man gibt dann einen geeigneten Wert für R vor und betrachtet R 2 und R 3 als einen kompletten Widerstand R23, d.h. im Grunde die Schaltung: : Wenn R vorgegeben ist, läßt sich mittels + 23 R R23 R W = der (exakte) Gesamtwiderstand R bestimmen. Danach betrachtet man statt des Ausgangsproblems die Teilschaltung: Welche Kombination von R 2 und R 3 ist die optimale, um möglichst dicht an R23 heranzukommen? Dies ist vergleichsweise einfach, da in Reihe geschaltete Widerstände sich addieren. Hat man eine solche Kombination von R und R 2 3 gefunden, berechnet man den Gesamtwiderstand und vergleicht diesen mit dem ursprünglichen Wunschwiderstand R W. Dann betrachtet man den nächsten Normwiderstand für R und wiederholt das Verfahren. R durchläuft also alle 4
Normwiderstände von einem geeigneten Startwert bis zum Maximalwert MOhm (was übrigens hier eine willkürliche Festlegung ist. Es gibt größere Normwiderstände. Wer Lust hat, kann gerne die Liste erweitern...). Als geeigneten Startwert für R kann man den Wunschwiderstand Rw wählen. Hier ist es empfehlenswert, vor der eigentlichen Programmierarbeit ein Struktogramm zu erstellen man geht sonst sehr schnell in die Irre. 5