Funk V 1.721 (c) 1990 by Wolf Software & Design Dieses Programm darf ohne ausdrückliche, schriftliche Zustimmung nicht vertrieben werden. Es ist kein Public Domain Programm. Was ist "Funk"? "Funk" ist ein Funktionsplotter für zwei Funktionen sowie für Funktionsscha- ren. Er beherrscht auch KURVENDISKUSSIONEN. "Funk" kann eigenständig ablei- ten. Alle differenzierbaren Funktionen werden abgeleitet. Die Kettenregel und logarithmisches Differenzieren sind implementiert. Source-Code Der Programmsource ist in Aztec C (V 3.4a) geschrieben. Systemvoraussetzungen Das Programn läuft unter WB 1.2 und WB 1.3. Da es nur dokomentierte Be- triebssystemroutinen verwendet, müßte es auch unter WB 2.0 und folgende funk- tionieren. Es werden bei normaler HiRes-Auflösung ca. 160KB Arbeitsspeicher (ohne arp.library) benötigt. Arithemtische Coprozessoren können mit Hilfe der gepatchten mathtrans.library (Fish 319) genutzt werden. Die mathtrans.li- brary muß, die arp.library (z.B von der Public Domain-Disk TBAG 31) sollte im libs:-Verzeichnis vorhanden sein. Bedienung: "Funk" wird über Menüs gesteuert. Nachdem ein Menuepunkt angewählt wurde, wird entweder die damit verbundenen "Anweisung" sofort ausgeführt oder in einem Extrafenster zu einer Texteingabe aufgefordert. "Funk" besitzt zur Ein- gabe einen eigenen (Zeilen-) Editor. Man kann in dem Text mit dem Cursor um- herfahren. Die DEL- und die Backspace-Taste werden unterstützt. Mit der ESC- Taste wird der Text ab der aktuellen Cursorposition gelöscht. Ist der Text länger als eine Zeile, entstehen beim Löschen von Zeichen auf dem Bildschirm Lücken, in diesem Fall kann durch Drücken der Help-Taste, der Text neu ausge- ben werden (somit erhält man wieder eine korrekte Bildschirmausgabe). Erläuterungen zu den einzelnen Menüpunkten: 1. Desk-Menü Hier können Funktionen eingeben, geändert, geladen oder gespeichert werden. Außerdem kann das Programm verlassen werden. Die einzelnen Punkte: 1.1 Neue Funktion (en) Es können neue Funktionen eingeben oder alte editiert werden. f (x,t) wird auch für die Kurvendiskussion verwendet. Der Graph (das Schaubild) erscheint in weiß auf dem Bildschirm. g (x,t) wird in Schwarz dargestellt. Aus Ge schwindigkeitsgründen (Turbo-Amiga-Besitzer verzeiht mir!) wird für g (x,t) pro Pixel auf der x-Achse nur ein Funktionswert berechnet. Bei Funktionen mit großen Steigungen können also Lücken im Graphen auftreten. Für f (x,t) wird eine automatische Punktdichtenanpassung vorgenommen. Nährere Erläuterungen hierzu in Abschnitt 2.3. Eingabe: Zuerst muß f (x,t) eingeben werden. Hierbei ist x die Zeichenverän- derliche und t der Scharparameter. Es können alle Rechenzeichen (+,-,*,/,^), die Funktionen sin, cos, tan, ln (natürlicher Lograthimus), exp (e^x), abs (Betrag) und sgn (Vorzeichen) sowie die Buchstaben n und e für pi und die Euler Konstante (e=2.7182) verwendet werden. Ist der Term korrekt eingeben, so wird er nochmals angezeigt (wie "Funk" ihn verstanden hat, also bereits verarbeitet!). Ist der Term ableitbar, so wird auch die 1. bis 3. Ableitung angezeigt. Es wird versucht, die Ableitungen weitgehend zu vereinfachen. Kann der Term nicht abgeleitet werden (bei Verwendung von abs/ sgn), dann ist eine manuelle Eingabe der "Ableitung" möglich. Bei "abs(x)" bestünde eine Näherung mit f'(x)=sgn(x), f''(x)=0; bei sgn (x) wäre f'(x)=0 eine Näherung. Diese "Ableitungen" stellen aber nur gewisse Näherung dar; sie sind mathema- tisch nicht exakt (Definitionslücken, Sprungstellen). Eine befriedigende Lö- sung ist also nicht möglich. Nun wird nach g (x,t) gefragt. g (x,t) wird nicht abgeleitet. Es kann also nur zu einem Eingabe- bzw. Klammerfehler kom- men. Wenn Änderungen vorgenommen wurden, wird gefragt, ob der Graph zeichnet werden soll. Hierbei gelten alle bereits gemachten Voreinstellungen bzw. die Standarteinstellungen, wenn noch nichts geändert wurde (siehe Abschnitt 2). 1.2 Graph zeichnen Will man den Funktionsgraph sehen oder neuzeichnen, so kann man diesen Menue- punkt benutzen. Das Zeichnen von Scharen kann durch Tastendruck abgebrochen werden. 1.3 Werte berechnen Es können einzelne Funktionswerte berechnet werden. Der x-Wert (die Stelle) muß angegeben werden. Alle verfügbaren Funktionswerte und Ableitungen werden angezeigt. Anschließend fragt "Funk", ob noch ein Wert berechnet werden soll. Hier läßt sich nun ein Grundprinzip des Programms erläutern: Nach jeder Frage werden in eckigen Klammern die möglichen Antworten angeben. Der Benutzer kann nun eine der Möglichkeiten wählen (er braucht dabei nicht auf Groß- und Kleinschreibung zu achten). Wird allerdings nur die Return-Taste gedrückt, so gilt automatisch, die erste der Angaben in den eckigen Klammern als gewählt. Übrigens 'j' steht für ja und 'n' für nein. Manchmal können zusätzlich Zahlen eingeben werden, die den gleichen Zweck wie die j/n-Tasten haben. Dies ist beim Arbeiten mit dem Nummernblock vorteilhaft. 1.4. Drucken Der aktuelle Bildschirm wird nochmal in doppelter y-Auflösung (Interlace) dargestellt. Zuvor wird gefragt, ob der Drucker eingeschaltet ist. Dann wird der neue Bildschirm auf dem Drucker ausgeben. Nach dem Drucken wird wieder der normale Bildschirm aufgebaut. 1.5 F(unktions)Terme zeigen Die Funktionsterme aller Funktionen und Ableitungen werden angezeigt. 1.6 Ableitungen editieren Wenn ihnen die von "Funk" berechneten Ableitungen nicht gefallen, haben sie hier die Möglichkeit, diese zu editieren. Wird die erste oder zweite Ablei- tung editiert, so werden die folgenden Ableitungen neu gebildet. Man muß zuerst die Nummer der zu editierenden Ableitung angeben, dann kann vorgegan- gen werden wie bei einer normalen Funktionseingabe. Es ist aber nicht mög- lich, eine Ableitung zu löschen. Es wird nicht überprüft, ob die neue Ablei- tung richtig ist. Wenn sie wieder die von "Funk" berechnete Ableitung haben wollen, müssen sie "Neue Funktion" wählen und dort den Term der Ausgangsfunk tion ändern (z.B. ein Leerzeichen einfügen und wieder löschen). "Funk" be- rechnet die Ableitungen dann neu. Im Normalfall ist es nicht nötig die von "Funk" berechneten Ableitungen zu ändern. 1.7/1.8 Funktion laden /Funktion speichern Es können Funktionen geladen und gespeichert werden. Ist die ARP-Library im System vorhanden, so wird der ARP-Dateiauswahlrequester verwendet. Die ARP- Library finden Sie auf der Public Domain Disk TBAG 31. Die Grenzen sowie der Bereich für den Scharparameter und die Rekursionstiefe werden mit gespei- chert, es bleiben also alle Einstellungen erhalten. 1.9 Programm verlassen "Funk" wird verlassen. 2. Einstellungen In diesem Menü können Zeichenbereich und der Wertebereich für den Scharpara- meter t eingestellt werden. 2.1 (Einstellungen) ändern Hier können alle Werte für den Zeichenbereich und die Skalierung verändert werden. Man muß sowohl die Bereiche für x- und y-Achse eingeben. Dies er- scheint mir notwendig, da alle bisherigen Methoden der automatischen y-Ach- sen-Anpassung unbefriedigend sind. Zudem kosten solche Algorithmen meist unnötigen Speicherplatz oder Rechenzeit. Der Skalierungsparameter gibt an, alle wieviele Einheiten ein Strich gemacht werden soll. Es werden einige Überprüfungen an diesem Wert vorgenommen, so daß sichergestellt ist, daß weder zuviele noch gar keine Skalierungsstriche gemacht werden. Es empfiehlt sich trotzdem den Skalierungsparameter in vernünftigen Grenzen zu halten und den Bezug zur Größe des darzustellenden Bereiches nicht zu verlieren. Wer z.B. 60000 Markierungsstriche auf der x-Achse haben will, sollte sich nicht wundern, wenn es einige Zeit dauert, alle unsinnigen Striche herauszufiltern. Alle Werte sollten nicht größer als 1.5e9 sein. Dies dürfte jedoch für norma- le Zwecke ausreichend sein. 2.2 (Einstellungen) für t ändern Hier wird die Wertemenge für den Scharparameter t festgelegt. Man muß den Startwert und den Endwert sowie die Schrittweite für t festlegen. Dies ist mit einer FOR-NEXT-Schleife (mit STEP) in Basic vergleichbar. Zudem kann noch der t-Wert für die Kurvendiskussion festgelegt werden. 2.3 Rekursionstiefe ändern Die Rekursionstiefe steht im Zusammenhang mit der automatischen Punktdich- tenanpassung. Es soll gewährleistet werden, daß der Graph kontinuierlich ge- zeichnet wird und nicht nur einzelne, unverbundene Punkte auf dem Monitor erscheinen. Folgendes ist zu beachten: - Eine zu große Punktdichte kann zu sehr, sehr langen Rechenzeiten führen, wenn eine Funktion unendlich dicht wird (z.B. sin (1/x)) - Eine besonders kleine Punktdichte kann zu Geschwindigkeitsgewinnen führen, wenn der Graph recht große Steigungen im Verhältnis zu Darstellungsbereich hat (z.B. sin (x) im Bereich von -100 bis +100), bei nicht periodischen Funk- tionen macht sich in der Regel kein großer Geschwindigkeitsgewinn bemerkbar. - Immer wenn durch zu kleine Punktdichten Zeit gespart wird, bestehen Teile des Graphen nur noch aus Punkten und nicht mehr aus einer durchgehenden Li- nie. Man kann um sich die Wirkung zu verdeutlichen problemlos mit Werten zwi- schen 1 und 10 experimentieren. Normalerweise ist es allerdings nicht nötig, den voreingestellten Wert zu ändern. Hinweis: Von einem einfachen Verbinden der berechneten Punkte habe ich trotz der damit zu erzielenden Geschwindigkeit abgesehen, da ein "Restrisiko" be- steht, dabei Punkte zu zeichnen, die nicht existieren (Definitionslücken). Sie können bei "Funk" sicher zu, daß jeder Punkt den Sie sehen, im Rahmen des Auflösungsvermögen des Amigas, existiert. Übrigens "Funk" paßt sich automa- tisch an die Größe und den Modus des Workbenchbildschirms an (So kann man "Funk" dann auch problemlos im INTERLACE-Modus betreiben). 2.4 (Einstellungen) zeigen Alle eingestellten Werte werden angezeigt. 3.Utilities Hier gibt es verschieden Hilfsprogramme aus dem Bereich der Analysis. Beson- ders hervorzuheben ist die Kurvendiskussion. Es gibt aber auch diverse (lei- der nur numerische) Flächenberechnungen. Hiermit wendet sich "Funk" besonders an den geplagten Schüler. Man sollte "Funk" aber nur benutzen, um sich Zusam- menhänge zu verdeutlichen oder Ergebnisse zu kontrollieren. Die Hausaufgaben mit "Funk" ausdrucken ist zwar eine bequeme Sache, rächt sich aber spätestens in der nächsten Klausur. Natürlich ist dieses Programm auch für Lehrer ge- dacht, die ihre Aufgaben schnell einmal kontrollieren wollen, bevor sie sie den Schülern vorlegen. Aber auch Studenten und alle, die mit Kurven, Null- stellen oder ähnlichem zu tun haben, können "Funk" natürlich jederzeit benut- zen. 3.1. KURVENDISKUSSION Es werden selbstständig alle Nullstellen, Hoch-, Tief-, Wende- und Sattel- punkte im Zeichenintervall gefunden. Die Funktion wird auf Symmetrie zum Ur- sprung und zur y-Achse untersucht. Der y-Abschnitt wird angezeigt. Um die Funktionsfähigkeit der Kurvendiskussion zu gewährleisten, sollten für das Zeichenintervall sinnvolle Grenzen gewählt sein. Bei ungünstigen Funktionen kann die Kurvendiskussion etwas länger dauern (schlimmstenfalls eine Minute auf einem 68000-Amiga). Die einzelen Schritte der Kurvendiskussion (NST- Suche, Extrema-Suche, Wendepunkt-Suche) können jeweils durch Tastendruck ab- gebrochen werden. 3.2 Druck KurDisk (Drucken der Kurvendiskussion) Es gilt dasselbe wie für die normale Kurvendiskussion, allerdings werden die wichtigen Ausgaben auf den Drucker umgeleitet. Manchmal will man nur eine Nullstelle, eine Extremstelle oder eine Wendestel- le suchen, hierzu bietet "Funk" die drei folgende Einzelfunktionen: 3.3/ 3.4/ 3.5 Nullstellen/ Extrema/ Wenderstellen Sind alle nötigen Ableitungen vorhanden, so wird zur Suche das Newton- Verfahren verwendet. Es ist nur nötig einen Startwert einzugeben, der mö- glichst nah an der gesuchten Stelle liegen sollte. Die Suche kann jederzeit durch Drücken einer beliebigen Taste abgebrochen werden. Während der Suche kann es zu unerwünschten Nullstellen in den Ableitungen kommen. Dann wird automatisch ein anderes Näherungsverfahren (Regula falsi) verwendet. Es muß dann allerdings ein Bereich [ Intervall ] eingeben werden, in dem die gewünschte Stelle liegt (man ersieht dieses Intervall leicht aus dem Gra- phen). Auch hier kann die Suche durch Tastendruck abgebrochen werden. Es wird die gesuchte Stelle ausgeben und die dazugehörigen Funktions- und Ableitungs- werte. Sind nicht alle nötigen Ableitungen vorhanden, so werden unterschiedliche Näherungsverfahren verwendet. Bei der Berechnung von Wendestellen völlig ohne Ableitungen kann es zu Problemen kommen, dies fällt allerdings kaum ins Ge- wicht, da die meisten Funktionen Ableitungen haben. 3.6 Integrieren 3.7 Fläche berechnen 3.8 Differenzfläche 3.9 Rotationsvolumen S= Integralzeichen Es werden folgende Ausdrücke numerisch genähert: Integrieren: s f (x) dx in den Grenzen von a bis b Fläche berechen : s abs (f(x)) dx in den Grenzen von a bis b Differenzflächen: s abs (f(x)-g(x)) dx in den Grenzen von a bis b Rotationsvolumem: pi*s f(x)^2 dx in den Grenzen von a bis b Die Eingabe der Integrationsgrenzen wird verlangt. Die Anzahl der Untertei- lungen muß angeben werden. Die Rechenzeit steigt linear mit der Untertei- lungsanzahl. Werte um 100 geben bei kleinen Intervallen recht gute Näherun- gen. Man sollte mehr Unterteilungen wählen, wenn Ober- und Untersummen-Äqui- valent zu weit auseinander liegen. Die Ober- und Untersummen-Berechnung kann nicht der mathematischen Definition entsprechen, daher der Zusatz 'Äquiva- lent'(Übereinstimmung mit Definition wird bei monotonwachsenden Funktionen erreicht). 3.10 Schnittpunkte Es müssen zwei Funktionen existieren. Es wird eine Nullstelle der Differenz- funktion gesucht. Es gilt daher sinngemäß alles, was in Abschnitt 3.3 (Null- stellen) steht. Ich hoffe Sie finden in "Funk" ein wirkungsvolles Hilfsmittel bei der Bewäl- tigung mathematischer Probleme und haben auch viel Spaß dabei.