Matheseiten-Übersicht
zurück

Funktionsgraphen-Plotter

Mit diesem Java-Applet können Funktionsgraphen gezeichnet und Wertetabellen erstellt werden. In das Textfenster muß dazu der gewünschte Funktionsterm mit x als Variable eingegeben werden. Der Darstellungsbereich kann frei gewählt werden. Zur Syntax siehe unten. Dort finden sich auch eine Aufstellung der unterstützten Funktionen und Erläuterungen zur Nullstellenapproximation und zur Erzeugung von Kurvenscharen.

Funktionsplotter

 
 
Bitte Java aktivieren!
 

f(x):=


Alte Graphen nicht löschen

 

 
→ Wertetabelle erstellen

  

Demo   1. Ableitung

 
© Arndt Brünner
          
Zoomen und Verschieben mit der Maus

Der Ausschnitt kann bei gedrückter Maustaste verschoben sowie durch Klicken herangezoomt und herausgezoomt werden. Zum Heranzoomen (Vergrößern, d.h. kleinerer Wertebereich ist sichtbar) muß beim Klicken die Umschalttaste gedrückt sein, zum Herauszoomen (Verkleinern, d.h. größerer Wertebereich ist sichtbar) beim Klicken die Strg-Taste bzw. Cntr-Taste. Beim Zoomen und Ziehen wird nur jeweils der letzte Plot automatisch neugezeichnet; alte Graphen und Kurvenscharen werden restauriert beim Neuzeichnen nach Klick auf eine der Schaltflächen [Graph zeichnen!] oder [Anwenden!]. Bei letzterer wird der Bereich auf die Angaben in den Eingabefeldern zurückgesetzt, die beim Ziehen und Zoomen nicht automatisch angeglichen werden.

Klicken Sie hier, um die Eingabefelder für den Darstellungsbereich an das aktuelle Plotfenster anzupassen und das Fenster gegebenenfalls mit allen Graphen, die vor dem Verschieben/Zoomen sichtbar waren, wiederherzustellen.

 

 
Wertetabelle erstellen

Gewünschten Funktionsterm oben rechts neben dem Plotterfenster eingeben

vonbis
 
SchrittweiteDezimalstellen
 
 
Formatierung

 

Syntax

Die Funktionsterme können weitgehend nach den normalen Schreibgewohnheiten angegeben werden. Die vereinfachte Multiplikationsschreibweise (ohne Punkt, z.B.: 2x+1 oder (x-2)(4+2x)) wird verstanden. Als Multiplikationszeichen wird ansonsten der Stern * verwendet (Bsp.: (x-2)*(4+2*x)).
Potenzen, wie x², werden mit dem Zeichen ^ geschrieben (auf der Tastatur links neben der 1), z.B.: x^2.

Wichtiger Hinweis: Bei einigen Netscape-Versionen stürzt der Browser aus mir unklaren Gründen (offenbar im Zusammenhang mit der Tastenanschlagüberwachung im Eingabefeld) nach Betätigen der ^-Taste ab. Daher kann ersatzweise anstelle von x^2 auch x'2 oder nur x2 eingegeben werden. Das Zeichen ^ wird dann intern ergänzt.

Das Divisionszeichen ist / . Es steht außerdem mit dem Prozentzeichen % ein Operator zur Verfügung, der den Rest bei einer Division ausgibt: 35%11 ergibt beispielsweise 2. Java unterstützt diese Modulodivision auch für Kommazahlen.

Es werden sowohl Dezimalkommas, pardon: -kommata, (3,1415926) als auch -punkte (1.618) verstanden; die Standardeingabeweise ist jedoch, wie im Deutschen und allgemein auf meinen Seiten üblich, das Komma. (Auch wenn's eine Menge programmiertechnische Arbeit macht...) (Sonderbar übrigens, daß das Dezimalkomma nicht auch im Rahmen der Anglisierung ("Reform") der Rechtschreibung "modernisiert" bzw. den heutigen "Lesegewohnheiten" angepassssssssst wurde!)

Der Plotter beachtet die normalen Rechenregeln ("Punkt- vor Strichrechnung" und dergleichen) und versteht auch verschachtelte Klammerung. Argumente von Funktionen müssen stets in runden Klammern geschrieben werden, z.B.: sqr(sin(x)+2).

Diese Version unterstützt folgende Funktionen:

(Auf einen Funktionsnamen klicken, um den zugehörigen Graphen zu sehen!)

  • sqr oder sqrt: Quadratwurzel
  • log: natürlicher Logarithmus
  • exp: Exponentialfunktion
  • abs: Absolutwert (Betragsfunktion)
  • int: auf Ganzzahl abschneiden
  • sin: Sinus*
  • asin: Arkussinus*
  • cos: Kosinus*
  • acos: Arkuskosinus*
  • tan: Tangens*
  • atan oder atn: Arkustangens*
  • cot: Kotangens*
  • acot oder atn: Arkuskotangens*
  • sec: Sekans*
  • asec: Arkussekans*
  • csc: Kosekans*
  • acsc: Arkuskosekans*

*) Die trigonometrischen Funktionen verwenden nicht das Gradsystem, sondern das Bogenmaßsystem, wobei 360°=2π ist.

Alle trigonometrischen Funkionen und Umkehrfunktionen gibt es selbstverständlich J auch in der hyperbolischen Version mit nachgestelltem h im Namen: sinh(), asinh(), cosh(), acosh(), tanh(), atanh(), coth(), acoth(), sech(), asech(), csch() und acsch()

 

An Konstanten sind pi (π = 3,14159265358979...), phi (=0,618...), Phi (=1,618...), d.h. die Verhältniszahlen des Goldenen Schnitts, und e_ (mit Unterstrich!), die Eulersche Zahl e = 2,7182818... , implementiert. Für e_^x, also ex, steht natürlich auch die übliche Schreibweise der Exponentialfunktion exp(x) zur Verfügung.


Kurvenscharen

Kurvenscharen können erzeugt werden, indem in den Funktionsterm das Zeichen @ eingebunden wird. Dieses steht für einen Parameter, der eine Folge von Zahlen durchläuft. Start-, Endwert und Schrittweite werden nach Betätigen der Schaltfläche in drei Eingabefenstern angegeben.

Beispiel: f(x):= (10/sqr(2*pi))*exp(-x^2/@) (Gaußsche Normalverteilung - der Parameter regelt die Breite der Streuung), Startwert: 1, Endwert: 5, Schrittweite: 1
Beispiel ansehen
Es werden Graphen für diese Terme gezeichnet:
(10/sqr(2*pi))*exp(-x^2/1)
(10/sqr(2*pi))*exp(-x^2/2)
(10/sqr(2*pi))*exp(-x^2/3)
(10/sqr(2*pi))*exp(-x^2/4)
(10/sqr(2*pi))*exp(-x^2/5)


Nullstellenbestimmung

Die Nullstellen werden (numerisch) ausgehend vom aktuell dargestellten Bereich gesucht. Nacheinander werden drei Algorithmen angewendet:

  1. Das Newton-Verfahren, das ausgehend von einhundert gleichmäßig über den aktuellen Darstellungsbereich verteilten Startwerten Nullstellen mittels der Zahlenfolge xn+1 = xn – f(x)/f´(x) sucht.
    Die erste Ableitung f´(x) wird durch (f(x+d)-f(x))/d angenähert (das ist die Ableitung des Interpolationspolynoms 2. Grades durch die Stützstellen f(x-d), f(x) und f(x+d) an der Stelle f(x)), bzw. mit (f(x-2d) + 8·(f(x+d) - f(x-d)) - f(x+2d))/(12d), was die Ableitung des Interpolationspolynoms 4. Grades für die fünf Stützstellen f(x-2d), f(x-d), f(x), f(x+d) und f(x+2d) an der Stelle f(x) ist. d ist dabei sehr klein, d.h. d < 10-8
    Es wird stets überprüft, ob f(x) nahe genug bei 0 liegt. Bei Funktionen, die sich stark asymptotisch zur x-Achse verhalten, wie etwa f(x):=exp(-x^2), versagt dieser Test allerdings, da alle Grenzen, so klein sie auch gewählt werden, in jedem Fall rasch unterschritten werden, ohne daß eine Nullstelle vorliegt. Der Test, ob f(x)/f´(x) das Vorzeichen wechselt, liefert jedoch einen guten Hinweis auf Konvergenz und eine echte Nullstelle. Bei asymptotischen Verläufen wechselt weder f(x) noch f´(x) das Vorzeichen, bei Achsendurchgängen nur f(x) und bei Extremalwerten nur f´(x). Nur in den letzten beiden Fällen wechselt der Quotient aus f(x) und f´(x) das Vorzeichen.


    Manchmal konvergiert die Newton-Folge auch bei Funktionen mit regulären Nullstellen nicht oder nicht zuverlässig, wie bei f(x):=sin(1/x^2).
     
  2. Zusätzlich zum Newton-Verfahren wird daher noch nach x-Achsen-Durchgängen gesucht. Dieses Verfahren versagt seinerseits bei Nullstellen, die gleichzeitig Minumum oder Maximum sind (z.B. bei f(x):=x^2 und x=0), wo die Funktion also nicht links und rechts der Nullstelle verschiedene Vorzeichen annimmt.
     
  3. Das dritte Verfahren sucht nach Minima der Funktion (f(x))2. Da Quadrate nicht negativ werden, besitzt diese Funktion an allen Nullstellen von f(x) Minima.
     
    Dies geschieht durch einen iterativen Prozeß: Ausgehend von Werten x0 wird die Kurve stückweise durch Parabeln approximiert, die jeweils durch drei Punkte y1=(f(x-d))2, y2=(f(x))2 und y2=(f(x+d))2 gehen, deren x-Werte den Abstand d zueinander besitzen. Den x-Wert des Extremums einer solchen Parabel liefert x-d·½(y3-y1)/(y1-2y2+y3). Durch die Folge xi+1=xi-d·½(y3-y1)/(y1-2y2+y3) werden Minima von (f(x))2 und damit Nullstellen von f(x) approximiert.

Die Kombination der drei Verfahren liefert meist gute und vollständige Ergebnisse.
Der Darstellungsbereich sollte so gewählt werden, daß benachbarte Nullstellen mehr als 5% des Bereichs auseinanderliegen.


Extremwertsuche

Die Suche nach Extremwerten verläuft entsprechend dem dritten Algorithmus der Nullstellensuche: Bei geeigneten Startwerten x0 und Abständen d konvergiert die Folge xi+1=xi-½·d·(f(xi+d)-f(xi-d))/(f(xi-d)-2·f(xi)+f(xi+d)) gegen ein lokales Maximum oder Minimum der Funktion f(x). Als Startwerte werden hier einhundert x-Werte im gleichen Abstand über den momentan dargestellten Bereich verwendet. Die Resultate liegen jedoch nicht nur im Darstellungsbereich, denn die o.g. Folge ist ja nicht auf diesen Bereich eingeschränkt. Es werden für jeden Startwert je 8 Iterationen mit d=0,1; d=0,01; d=0,001 usw. bis d=0,0000001 durchgeführt.


© Arndt Brünner, 3. 7. 2002
Version: 22. 4. 2005
Matheseiten-Übersicht
3D-Plotter
Rechner
Rechner für große Zahlen
Gästebuch
zurück