2
Mathematische Methoden
2.1 Funktionen und ihre grafische Darstellung
Tabelle: Funktionen
Modul: Funktion
Funktion: Exponentialf
Das grafische Angebot von Excel ist sehr umfangreich. Zur Einführung in dieses Thema wollen wir eine mathematische Funktion darstellen, welche in VBA definiert ist.
Die Funktion sei:
(2.1-1)
Diese Funktion in Excel einzugeben ist nicht ganz ohne, in VBA ist das jedoch eine Kleinigkeit.
Erstellen Sie das Modul „Funktion“.
Abb. 2.1-1 Modul „Funktion“
Erstellen Sie eine Funktion „Exponentialf“:
Abb. 2.1-2 Einfügen, Prozedur
Abb. 2.1-3 Prozedur einfügen
Abb. 2.1-4 VBA Code Exponentialfunktion
Füllen Sie die Tabelle wie folgt aus:
Abb. 2.1-5 Exceltabelle Exponentialfunktion
Nun klicken Sie auf C11. Wählen Sie dann fx und
Abb. 2.1-6 Funktion einfügen
Abb. 2.1-7 Funktionsargumente, Teil 1
Nach unten scrollen und x wählen.
Abb. 2.1-8 Funktionsargumenmte, Teil 2
Füllen Sie die 5 leeren Datenfelder, indem Sie in das Feld für A klicken und dann auf die Zelle B3 klicken, usw. Das Ergebnis wird unten links bereits angezeigt.
Setzen Sie in C11 die Variablen B3:B7 als Konstante fest, indem Sie sie mit $-Zeichen ergänzen.
Ziehen Sie nun die Zelle C11 nach unten bis C30. Nun erstellen Sie die Grafik. Markieren Sie dazu den Zellbereich B11:C30.
Wählen Sie dann Einfügen, Punkt und dann das Symbol für Punkt mit Linien.
Abb. 2.1-9 Einfügen, Punkt
Abb. 2.1-10 Punkt-Kurvendiagramm auswählen
Sie erhalten folgendes Bild:
Abb. 2.1-11 Grafik Exponentialfunktion
Für die weitere Bearbeitung soll nicht unser Thema sein. Klicken Sie auf die Grafik. Sie werden dann geführt.
Ändern Sie die Parameter nach Belieben in B3:B7.
Wie bei jeder Berechnung zeigt erst die Praxis, ob wir an alles gedacht hatten. Haben wir? Nein, haben wir nicht. Der Nenner kann = 0 werden, dann ist die Funktion nicht ausführbar. Wir sollten dem vorbeugen. Es gibt zwei Möglichkeiten. Die eine besteht darin, den Nenner auf 0 zu prüfen, die andere, eine extrem kleine Zahl hinzuzufügen. Wir wählen zunächst letzteres. Nun sieht das Programm wie folgt aus:
Abb. 2.1-12 VBA Code Exponentialfunktion
Wir wollen das Verhalten an der Stelle Nenner = 0 testen. Dazu setzen wir c = -1 und n = 0. In der Grafik erscheint:
Abb. 2.1-13 Grafik Exponentialfunktion c = -1, n = 0
Damit haben wir zwar eine grafische Überraschung erzeugt, indem der y-Wert auf 10-10 angestiegen ist, aber wir haben einen Absturz des Programms verhindert. Ist diese Lösung perfekt? Nein. Denn der Nenner kann trotzdem = 0 werden. Also wollen wir die zweite Alternative testen. Ändern Sie das Programm wie folgt:
Abb. 2.1-14 VBA Code Exponentialfunktion
Die wichtigste Funktion hier ist „Exit Function“. Nun kann uns eigentlich nichts mehr passieren. Sollte der Nenner = 0 werden, wird das Programm abgebrochen. Damit werden wir auf Dauer aber auch nicht zufrieden sein. Der Programmabbruch verhindert zwar den Programmabsturz, aber ohne einen Hinweis ist er nicht viel wert. Daher fügen Sie nun wie folgt einen Hinweis ein:
Abb. 2.1-15 VBA Code Exponentialfunktion
Ergänzen Sie die Zellen A9:B9 wie folgt mit Fehlerindex = -1. Ist B9 = -1 wird die Message Box aktiv, ansonsten nicht. Wir haben nun erreicht, dass für den Fall, dass der Nenner = 0 wird, das Ergebnis ebenfalls = 0 wird.
Setzen Sie zum Testen den Parameter c in B5 = -1. Es erscheint
Abb. 2.1-16 Anzeige der Meldung
und die Zelle C11 wird = 0.
Es kann passieren, falls für alle x der Nenner = 0 wird, dass die Meldung 20-mal erscheint. Dann müssen Sie leider 20-mal OK klicken. Setzen Sie dann B8 = 0 und alle y-Werte werden = 0 gesetzt, ohne dass die Meldung erscheint.
Sie haben hier gelernt, dass eine grafische Darstellung zwar einfach sein kann, diese aber benutzerfreundlich zu gestalten, geht nur mit VBA.
2.2 Berechnen von Reihen
Tabelle: Fourier
Modul: Fourier
Funktion: Fourierf
Manche mathematische Lösungen bestehen in der Berechnung von Reihen. Das wird meist durch ein Summenzeichen Σ ausgedrückt. So lassen sich bekanntlich die Zahlen e und pi durch eine Reihe berechnen. Periodische Funktion wie z.B. Schwingungen lassen sich nach Fourier ebenfalls durch Reihen berechnen. So erhält man u.a. eine Reckechtschwingung durch die Addition von Sinusfunktionen, deren Frequenz im Verhältnis 1:3:5:7 usw. stehen. Die Amplituden stehen im selber Verhältnis zueinander.
Wir betrachten einen Stab von der Länge l = 3 cm. An der Stirnseite bei l = 0, wird die Temperatur auf -5°C gesetzt und auf der gegenüber liegenden Seite, bei l = 3, auf 25°C gesetzt. Der Temperaturverlauf entspricht nach unendlich langer Zeit der Funktion
(2.2-1)
Dies entspricht den Vorgaben über zwei Randbedingungen und einer Anfangsbedingung der unten stehenden Differentialgleichung 2.2-2.
Nun werden zum Zeitpunkt t = 0 die beiden Enden des Stabes sprunghaft und konstant bei der Länge l = 0 auf 10 °C und bei der Länge l = 3 auf 40 °C gesetzt. Nach unendlich langer Zeit gehorcht das Temperaturprofil der Funktion
Frage: wie ändert sich das Temperaturprofil in Abhängigkeit von Zeit und Stablänge?
Für die instationäre Wärmeleitung gilt das 2. Fick’sche Gesetz. Dieses lautet:
(2.2-3)
mit
(2.2-4)
Es beschreibt die Temperatur als Funktion von Ort und Zeit. Im Ebert-Ederer wird als analytische Lösung dieses Problems die Fouriergleichung als Summe von Winkelfunktionen angegeben. Diese lautet:
(2.2-5)
Darin ist n die Zahl der Glieder, l die Stablänge, k die Temperaturleitfähigkeit. In dem VBA-Programm werden diese Parameter sowie die Temperaturen an den beiden Stabenden eingegeben. Das Programm berechnet dann die Summen.
Das Programm ist recht einfach und leistungsfähig.
Abb. 2.2-1 VBA Code Fourier
Die Ergebnisse der Funktion „Fourierf“ werden in der Excel Tabelle „Fourier“ 121 mal verwendet. Diese ist nachstehend abgebildet. Man sieht links oben eine Einzelberechnung in Zelle B9 wie sie im o.g. Buch durchgeführt wurde. Zu sehen ist auch die Tabelle mit der zugehörigen Grafik.
Abb. 2.2-2 Exceltabelle Fourier
Um die Funktion zu benutzen, klickt man eine beliebige Zelle an und klickt dann auf fx. Unter „Benutzerdefiniert“ findet man dann „Fourierf“.
Abb. 2.2-3 Funktion einfügen, Benutzerdefiniert
Dann erscheint das folgende Menü. Dort gibt man die Zellen der Variablen x, z, s ein, indem man in das weiße Feld neben der Variable x klickt und dann auf die Zelle B4, usw.
Abb. 2.2-4 Funktionselemente
Hier zeigt sich der Vorteil der Programmierung gegenüber der Berechnung in einer Excelzelle. Einerseits ist die Formel für eine Zelle viel zu umfangreich, andererseits ist die Summenbildung in einer Zelle nicht möglich und letztlich ist die mehrfache Verwendung der Formel in VBA viel einfacher.
Ergebnis:
Abb. 2.2-5 Grafik Fourier mit t = 0,01s, 42s, 10s und 50s
Diese Grafik wurde für 4 Zeiten berechnet. T1 = 0,01 s, T2 = 4 s, T3 = 10 s und T5 = 50 s Zeiteinheiten, n = 70. Dazu wurde eine Tabelle angelegt, in der die Länge in Schritten von 0,1 verändert wird.
Man erkennt leicht, dass bei T1 = 0,01 s der Temperaturverlauf bis auf die beiden Randzonen dem des ursprünglichen Zustands bei t<0 entspricht. Bei T2 und T3 ist der Temperaturverlauf mit dem des ursprünglichen in der Stabmitte noch identisch, währen bei T4 dieser schon nahezu linear verläuft. Bei 200 s ergab sich in der Tat ein linearer Temperaturverlauf.
Das Problem der Reihenbildung besteht darin, die notwendige Anzahl an Reihengliedern zu wählen. Sind diese zu niedrig angesetzt, entsteht ein Fehler und die Charakteristik der Funktion wird deutlich.
Die Beschriftung der Achsen erfolgt durch Markieren der Grafik, Nun „Layout“ in der oberen Menüzeile anklicken, Achsentitel anklicken.
Abb. 2.2-6 Layout, Achsentitel, Titel unter SAchse
Mit n = 1 erhält man folgendes Ergebnis:
Abb. 2.2-7 Grafik Fourier mit 4 Zeiten und n = 1
Man kann diesem Ergebnis nicht ansehen, dass es zumindest für T1 absolut falsch ist. Mit n = 10 sieht das Ergebnis wie folgt aus:
Abb. 2.2-8 Grafik Fourier mit 4 Zeiten und n = 10
Auch bei diesem Ergebnis ist die Kurve für T1 noch falsch. Deutlich sind Schwingungen im Temperaturprofil erkennbar.
Die Rechenzeit für n = 70 liegt unter 1 s, was erstaunlich niedrig ist.
Eindimensionale instationäre Wärmeleitungen kommen häufig in der Praxis vor. Die Lösung mit Hilfe der Fouriergleichung und deren Reihenentwicklung ist mit VBA leicht möglich. Eine dreidimensionale instationäre...