Funktions-Diagramm

Das Programm berechnet die Koordinaten der Ausgezeichneten Punkte und zeichnet das Diagramm.

Andererseite zeigt dieses Live-Beispiel, wie man typische Aufgaben der Kalkulation auch mit Web-Technologie lösen kann.


Verwandte Themen


Tabellen-Kalkulation


Die Kapitel dieser Seite sind besonders ausführlich kommentiert. Das Beispiel kann daher als Muster für alle ähnlichen Funktions-Aufgaben dienen.

Im Kapitel Download wird ein fertiges Beispiel angeboten, in dem auch die Ausgezeihneten Punkte der Funktion berechnet werden.

Vorgaben und Ergebnisse


Layout

Die einstellbaren Vorgaben werden am besten in der linken oberen Ecke programmiert. Dort beginnt man zu Lesen und dort sollte man sowohl mit der Programmierung als auch bei der Anwendung beginnen.
Alle zur Eingabe vorgesehenen Zellen werden eindeutig beschriftet und formatiert - hier z.B. mit hellgrünem Hintergrund.
Fortgeschrittene AnwenderInnen führen noch weitere Arbeiten durch, z.B. Kommentare, Aufhebung des Zell-Schutzes und Begrenzung des Werte-Bereichs (Gültigkeit) für alle Eingabe-Felder.



Typische Fehler von wenig erfahrenen EntwicklerInnen:

Man versucht, eine Aufgabe (z.B. Berechnung von y) zu programmieren, bevor an alle dabei verwendeten Variablen Zahlenwerte zugewiesen wurden.
Das muss scheitern, denn eine Tabellen-Kalkulation kann nur numerisch (mit Zahlenwerten) rechnen, nicht symbolisch (mit Variablen-Namen).

Man verliert viel Zeit mit der Suche nach Angaben, die in der Aufgabe nicht ausdrücklich enthalten sind.
Entscheiden sie sich in diesem Fall rasch und tragen sie für die jeweilige Variable einen beliebigen, jedoch sinnvoll erscheinenden Zahlenwert ein. Wenn später das Diagramm der Funktion fertiggestellt ist, dann kann man viel besser mit den Zahlenwerten aller Vorgabe-Variablen experimentieren.



Wenn in einer Aufgabe verlangt wird, einen einzelnen Punkt einer Funktion zu berechnen, dann programmiert man das unmittelbar nach den allgemeinen Vorgaben.
Das Ergebnis (hier: der Wert von y) muss sich unmittelbar daneben oder darunter befinden.
Es ist empfehlenswert, in jedem Fall einen einzelnen Funktions-Punkt zu berechnen: Das Diagramm bietet zwar die bessere Übersicht, es ist jedoch schwierig, daraus einen genauen Zahlenwert zu entnehmen.



Die Ergebnisse werden eindeutig formatiert und kommentiert, damit man sie nicht suchen muss.

In diesem Beispiel werden - mit Ausnahme eines einzelnen Funktions-Punktes - keine weiteren Resultate berechnet, daher entfällt ein eigener Ergebnis-Bereich.

Programmierung der horizontalen Skala


Polygon-Zug

Man kann in einem XY-Diagramm keine gekrümmten Linien verwenden. Zur Darstellung einer Funktions-Linie berechnet man viele einzelne Punkte der Funktion und verbindet sie mit kurzen geraden Linien zu einem Polygon-Zug. Die vielen kurzen Linien ergeben insgesamt den Eindruck einer 'Kurve'.

In diesem Kapitel wird beschrieben, wie man die horizontale Skala programmiert, d.h. die X-Koordinaten der einzeln berechneten Funktions-Punkte.



In jedem auch nur halbwegs professionellen Beispiel wird die X-Skala programmiert.
Dazu werden hier 2 verschiedene Versionen vorgestellt.


 AB
11X-Skala
12x[min]-10
13  
14  
15Δx 0,4

Skalen-Anfang und Auflösung

Mit den links gezeigten Vorgaben wird die Liste der X-Koordinaten programmiert.
Die Variable x[min] legt das untere (linke) Ende der Skala fest.
Die Variable Δx legt den horizontalen Abstand zwischen je 2 berechneten Punkten fest.
Die beiden Zeilen 13 und 14 werden freigehalten, damit man hier die alternative Lösung des nächsten Absatzes einsetzen kann.
Der Begriff Auflösung bezeichnet hier den reziproken Wert 1/Δx
Sie muss umso größer sein, je stärker die Funktions-Kurve gekrümmt ist, weil sonst die Ecken des Polygon-Zugs sichtbar werden.


 AB
11X-Skala
12x[min]-10
13x[max]10
14n50
15Δx=(B13-B12)/(B14)

Skalen-Anfang und -Ende

Dies ist eine Alternative zur Programmierung der X-Skala. Sie erfordert mehr Aufwand, ist jedoch in der Anwendung besser verständlich.
Die Variable x[min] legt das untere (linke) Ende der Skala fest.
Die Variable x[max] legt das obere (rechte) Ende der Skala fest.
Die Variable n legt die Anzahl der berechneten Intervalle fest. Die Anzahl der berechneten Punkte ergibt sich daraus mit n+1
Die Variable Δx wird in diesem Fall berechnet. Sie legt den Abstand zwischen je 2 berechneten Punkten fest.


 AB
20xy
21=B12 
22=A21+$B$15  
23=A22+$B$15 
24=A23+$B$15 
 ⇓⇓ 
72=A71+$B$15 

X-Skala

In Zelle B21 wird der vorgegebene Skalen-Anfang x[min] eingetragen.
Der Wert der folgenden Zelle B22 wird um den vorgegebenen Abstand Δx erhöht.
Der Wert jeder weiteren Zelle wird um den gleichen Betrag Δx erhöht. Man muss die Formel nur 1mal (in Zelle A22) programmieren und kann sie dann nach unten ausfüllen.
Beim Ausfüllen nach unten wird die Zeile aller in der Formel enthaltenen Adressen automatisch erhöht (z.B. A21, A22, A23, ...). Das darf mit der Adresse B13 nicht passieren, denn der Wert von Δx muss immer aus der gleichen Zelle entnommen werden. Daher muss man die Zeile der Adresse mit einem vorangestellten $-Zeichen festhalten.
Man kann die Liste beliebig weit nach unten ausfüllen. In diesem Beispiel wird sie in Zeile 72 mit dem Wert x=+10 abgebrochen.

Berechnung eines einzelnen Funktions-Punktes


Berechnung eines Funktions-Punktes

Die Berechnung wird im Layout deutlich abgesetzt, weil ihre Details für die Anwendung nicht gebraucht werden. Sie wird jedoch auch nicht versteckt, damit man sie bei Bedarf kontrollieren kann.

Der Wert der X-Koordinate wird aus den ↑ Vorgaben in Zelle A19 kopiert.
Das Ergebnis wird in Zelle B19 berechnet.



Alle angeführten Beispiele lassen sich rasch und ohne irgendwelche Hilfsmittel (!) kontrollieren.

Erst danach testet man kompliziertere Fälle. Zur Kontrolle kann man einen Taschenrechner oder ein SmartPhone verwenden. Bei schwierigen Formeln besteht allerdings ein gewisses Risiko, in beiden Fällen (Tabellen-Kalkulation und Taschenrechner) unterschiedliche Fehler zu programmieren.

In jedem Fall sollte man überlegen, ob das jeweilige Test-Ergebnis plausibel ist. Beispiel: Wenn von einem Programm die Entfernung Wien-Berlin mit 123m berechnet wird, dann kann man einen kleinen Fehler vermuten.

Eine weitere Methode der Kontrolle ist der Vergleich mit bekannten Resultaten: Man sucht z.B. im Internet nach der Entfernung Wien-Berlin und vergleicht die Angaben mit dem eigenen Resultat.



Eine Formel sollte keine Zahlenwerte enthalten.
Wenn man einen Zahlenwert braucht, dann legt man dazu eine eigene Variable in den Vorgaben an.
Ausnahmen sind Konstanten wie die Kreiszahl Pi (wird mit der Funktion PI() programmiert) oder fixe Bestandteile einer Formel, z.B. der Faktor ½ oder - in diesem Beispiel - die Exponenten 2 und 3
Naturkonstanten sind keine Ausnahme: Sie werden in die Vorgaben aufgenommen, jedoch von den zur Eingabe vorgesehenen Variablen abgesetzt. Beispiel: Die Lichtgeschwindigkeit in m/s c=3.0E+8



Dazu wird in die bis dahin leere Zelle B9 die Formel eingetragen
=B18

Berechnung der Funktions-(Polygon)-Punkte


 AB
19Polygon‑Punkte
20xy
21=B12=$B$2*A21^3 + $B$3*A21^2 + $B$4*A21 + $B$5
22=A21+$B$15=$B$2*A22^3 + $B$3*A22^2 + $B$4*A22 + $B$5
23=A22+$B$15=$B$2*A23^3 + $B$3*A23^2 + $B$4*A23 + $B$5
 ⇓⇓⇓⇓
23=A22+$B$15=$B$2*A23^3 + $B$3*A23^2 + $B$4*A23 + $B$5
In diesem Bereich werden viele einzelnen Funktions-Punkte berechnet, die zur Erstellung des Diagramms verwendet werden.

Die Programmierung ist besonders einfach:
Die ↑ Skala der X-Koordinaten wird in einem eigenen Kapitel erklärt und sollte hier bereits fertig sein.
Die Formel wurde bereits bei ↑ Berechnung eines einzelnen Funktions-Punktes programmiert und getestet.
Kopieren sie die Zelle von B19 nach B21
Anders formuliert: Markieren sie die Zelle B19. Kopieren sie (z.B. mit Taste Strg-C) und setzen sie die Zwischenablage in die Zelle B21 ein (z.B. mit Taste Strg-V).
Danach kann man die Formel von B21 bis zum Ende der Skala nach unten ausfüllen.

Diagramm


In einem XY-Diagramm werden diese Punkte mit kurzen geraden Linien (Polygon-Zug) verbunden.


In LibreOffice und OpenOffice verwendet man Menü Einfügen / Diagramm.
Im Fenster Diagramm-Assistent wählt man XY-(Streu)-Diagramm, im rechten Teil-Fenster die 3.Version Nur Linien
Die übrigen Optionen sind meistens bereits passend eingestellt.

Bei Erfolg wird das Diagramm angezeigt.
Das Diagramm ändert sich mit jeder Änderung der Vorgaben.


In LibreOffice und OpenOffice markiert man das Diagramm mit Doppelklick. Es wird danach mit einem grauen Rand angezeigt. Nun wird oben eine Menü-Zeile mit speziellen Diagramm-Optionen angezeigt. Alternativ kann man jedes einzelne Element mit RechtsKlick oder einem weiteren Doppelklick formatieren.



In LibreOffice und OpenOffice fixiert man die Achsen so:

Markieren sie das Diagramm mit DoppelKlick, sodass es mit einem grauen Rand angezeigt wird.

RechtsKlick auf die X-Achse, Menü Achse formatiere / Skalierung

Web-Programmierung


Hier wird erklärt, wie das ↑ Live-Beispiel programmiert ist. Im nächsten ↓ Kapitel werden die beiden Methoden verglichen.



Die Mini-Webseite ist in diese Seite mit einem HTML <iframe>-Element eingebettet:
<iframe src="polynom.html"></iframe>

Zur Programmierung der Mini-Webseite wurden mehrere moderne Web-Technologien kombiniertt:
Die Basis ist - wie für fast jede andere Webseite - → HTML, hier in der Version HTML-5
Für Layout und Formatierung wird → CSS verwendet.
Die interaktiven Funktionen und die Berechnung der Aufgabe sind mit → Javascript programmiert.
Das Diagramm ist mit → SVG-ObjektGrafik programmiert, die interaktive Änderung seiner Elemente mit Javascript.



Alle modernen Browser verstehen HTML-5, CSS und Javascript. SVG wird schon lange von allen modernen Browsern unterstützt, zuletzt sogar von neueren Versionen des MSIE-Browsers.



Die erste Regel *{} wird auf alle Elemente angewendet. Danach folgen Regeln für HTML-Elemente, zuletzt jene für SVG-Elemente.

Regeln, die auf mehrere Elemente angewendet werden, sind mit einem führenden . Punkt benannt, Regeln für ein einziges Element mit einem führenden # Zeichen.



Im Abschnitt 'Calculation' sind alle Auswertungs-Funktionen enthalten:
Funktion calculate() organisiert alle zur Auswertung dienenden Teil-Aufgaben. Während dieser Arbeiten sind alle Event-handler abgeschaltet, danach werden sie wieder aktiviert.
Funktion draw_polygon() ändert die Koordinaten der Polygon-Linie, mit welcher das Diagramm dargestellt wird).
Funktion calc_points() berechnet die Koordinaten der Ausgezeichneten Punkte: Wendepunkt, Extremwerte, Nullstellen. Die Berechnung der Nullstellen nach dem  Newton-Verfahren erfordert den meisten Aufwand.
Funktion write_points() schreibt die Koordinaten der Ausgezeichneten Punkte in die Ergebnis-Tabelle.
Funktion draw_points() ändert die Koordinaten der Ausgezeichneten Punkte im Diagramm.

Der Abschnitt 'Tools' enthält einige Hilfs-Funktionen, darunter das Objekt Point(), welches für die Ausgezeichneten Punkte verwendet wird.



Danach folgen die beiden Bildschirm-Tasten (Buttons) 'Reset' und 'Zufallswerte' als HTML <button>-Elemente. Ihre onclick-Attribute legen fest, welche Javascript-Funktion beim Anklicken auszuführen ist.

Das letzte Element der linken Seite ist die Tabelle der berechneten Ergebnisse, das sind in diesem Fall die Koordinaten der Ausgezeichneten Punkte. Die Werte werden von der Javascript-Funktion calc_points() berechnet und von der Funktion write_points() eingetragen.



Der überwiegende Teil der Grafik-Elemente wird zum Zeichnen der fixen Elemente verwendet: Achsen, Skalen und Hilfslinien.

Der Abschnitt 'Daten' ist anfangs leer. Die Javascript-Funktion draw_lines() erzeugt darin einen Polygon-Zug von 100 Linien. Es ist eleganter, diese Linien mit einem kleinen Programm Live zu erzeugen, als ebenso viele Zeilen SVG-Quelltext einzufügen.

Zuletzt folgen 6 <circle>-Elemente, mit denen die Ausgezeichneten Punkte dargestellt werden. Ihre Position wird mit der Javascript-Funktion draw_points() an die berechneten Ergebnisse angepasst.

Vor- und Nachteile


Die Verwendung einer Tabellen-Kalkulation ist naheliegend und wird in ähnlicher Form oft verwendet. Die Lösung mit Web-Methoden ist weniger bekannt, kann jedoch - je nach Umfeld - Vorteile bieten.


Tabellen-KalkulationWeb-Technologie
Hardware & Software
Kalkulations-Lösungen laufen auf jedem einzelnen Arbeits-PC.
Die Kosten von kommerzieller Software wie MS-Office sind anteilig einzurechnen. Sie fallen allerdings wiederholt (mit jeder neuen Version) oder sogar laufend (bei Nutzng der Cloud-Version) an.
Hardware & Software
Web-Lösungen laufen auf einem (einzigen zentralen) Server.
Die Hardware-Kosten des Server-PC sind anteilig einzurechnen. Wenn man Standard-Komponenten verwendet (Linux-System, Apache-Webserver), dann fallen keine Software-Kosten an.
Herstellung
Die Kosten für eine Einzelplatz-Lösung sind gering, weil zumindest einfache Kenntnisse der Tabellen-Kalkulation in fast jedem Betrieb verfügbar sind.
Die Kosten steigen allerdings rasch, wenn eine Lösung an mehreren Arbeitsplätzen verwendet werden soll. Wenn eine derartige Lösung nicht professionell ausgeführt wird, dann können später hohe Folge-Kosten anfallen.

Die Zeit zur Programmierung wird meist stark unterschätzt. Eine Amateur-Version für einen einzelnen Arbeitsplatz kann schon nach einigen Minuten fertig sein. Eine professionelle Ausführung kostet jedoch um Größenordnungen mehr Zeit.
Herstellung
Die Kosten sind höher, weil die notwendigen Kenntnisse nur in größeren Betrieben verfügbar sind. In den meisten Fällen wird zur Programmierung ein externer Auftrag vergeben. Wenn kein Pfuscher beauftragt wird, dann ist meist auch die Qualität der Ausführung professioneller als eine Amateur-Entwicklung.
Für SmartPhones sollte man ein eigenes Layout anlegen.

Die Kosten sind von der Anzahl der AnwenderInnen unabhängig. Diese Lösung ist daher umso günstiger, je mehr Personen damit arbeiten.

Die Einschätzung der Arbeitszeit ist Aufgabe der/des EntwicklerIn: Man beauftragt nur Fixkosten, keine Stunden-Honorare.
Algorithmen
Die Stärke der Tabellen-Kalkulation ist die rasche Anwendung einfacher Formeln.
Die (hier zur Berechnung der Extremwerte) notwendige Lösung von quadratischen Gleichungen ist möglich, für die meisten EntwicklerInnen jedoch bereits zu schwierig.
Die (hier zur Berechnung der Nullstellen) notwendige Berechnung von Schleifen ist mit Standard-Methoden nicht möglich. Man kann solche Algorithmen (z.B. das  Newton-Verfahren) mit → Basic programmieren, das übersteigt jedoch ebenfalls die Kenntnisse der meisten EntwicklerInnen von Tabellen-Kalkulations-Lösungen.
Algorithmen
Für Web-Methoden gibt es keine Einschränkung der verwendbaren Formeln und Algorithmen, sondern umgekehrt besonders viele Programme und Funktionen, die man direkt oder nach Adaptierung verwenden kann.

Auch die Kenntnisse stellen kein Hindernis dar: Web-EntwicklerInnen beherrschen mindestens die Programmiersprachen → Javascript und → PHP, mit denen man alle (überhaupt lösbaren) Aufgaben ausführen kann.
Anwendung
Gut programmierte Lösungen laufen mit allen Standard Tabellen-Kalkulations-Programmen (LibreOffice, MS-Office, OpenOffice) auf allen gängigen Betriebssystemen. Das ist auf den meisten Arbeits-PC gewährleistet, nicht jedoch auf SmartPhones.

In der Praxis trifft man leider oft auf Amateur-Lösungen, die an ein Betriebssystem, an ein Programm oder sogar an eine bestimmte Version gebunden sind.
Anwendung
Eine Web-Lösung ist prinzipiell auf jedem Betriebssystem und mit jedem Browser ohne weitere Installation verwendbar, auch auf SmartPhones.

Man trifft nur selten auf unsauber programmierte Lösungen, die spezielle Eigenschaften bestimmter Browser verwenden. Seit auch der MSIE-Browser SVG-Objekt-Grafik unterstützt, sind auch Diagramme allgemein verwendbar.
Wartung
Aufwand und Kosten nehmen mit der Anzahl der Arbeitsplätze zu. Man muss sicherstellen, dass an allen Arbeits-PC die gleiche Version des Tabellen-Kalkulations-Programms und des Kalkulations-Dokuments verwendet wird.
Wartung
Eine sauber programmierte Lösung erfordert keine Wartungs-Kosten, weil Web-Lösungen auf jeder Standard-Server-Software laufen.
Änderung
Kleine Änderungen sind rasch und billig ausführbar.
Die Verteilung des neuen Kalkulations-Dokuments ist jedoch nicht nur aufwändig, es können auch hohe Folge-Kosten entstehen:

Eine neue Version muss an alle AnwenderInnen verteilt werden, und alle alten Versionen müssen gelöscht werden. Es ist schwierig, das zu garantieren, oder die Verwendung einer veralteten Version überhaupt zu bemerken: Sicherungs-Kopien (z.B. auf USB-Sticks) oder Kopien an privaten Geräten werden oft übersehen.
Änderung
Kleine Änderungen sind rasch und billig ausführbar.
Eine neue Version ist sofort für alle AnwenderInnen gültig.

Eine Verteilung ist nicht notwendig. Durch passende Maßnahmen kann man garantieren, dass die neue Version von allen Browsern beim nächsten Öffnen der betreffenden Webseite geladen wird.
Sicherheit
Die Sicherheit gegen Programm-Fehler hängt von der Entwicklung ab.

Zur Sicherung gegen unbefugte Verwendung kann man mit wenig Aufwand ein Passwort einrichten. Man kann allerdings weder die unbefugte Weitergabe einer Kopie noch des Passworts verhindern. Es ist kaum möglich, periodisch oder nach verdächtigen Ereignissen eine Änderung des Passworts durchzusetzen.
Sicherheit
Die Sicherheit gegen Programm-Fehler hängt von der Entwicklung ab.
Zur Sicherung gegen unbefugte Verwendung stehen an jedem Server mehrere Standard-Methoden zur Verfügung. Man kann die Anwendung an bestimmte User binden und/oder zusätzlich ein eigenes Passwort verlangen.
Darüber hinaus kann man die Anwendung an den (Betriebs)-Standort und/oder an bestimmte Geräte binden. Letztlich kann man unbefugte Verwendung durch Protokollierung zumindest leichter entdecken.
Datenbank
Die Verwendung von Daten einer zentralen Datenbank ist möglich, jedoch kritisch: Die Programmierung übersteigt die Kenntnisse vieler EntwicklerInnen, die Verteilung und laufende Wartung ist anfällig gegen Fehler.
Datenbank
Man kann problemlos Daten aus einer Datenbank zur Berechnung von Web-Lösungen verwenden. Dazu werden Standard-Methoden verwendet, die von jeder Server-Software geboten und von allen Web-EntwicklerInnen beherrscht werden.
Kontrolle
Die Kontrolle jeder Anwendung ist zwar theoretisch möglich, in der Praxis aber kaum durchführbar. Der Aufwand ist enorm, der Erfolg letztlich nur lückenhaft.
Kontrolle
Bei Bedarf ist es leicht möglich, jede Verwendung in einer Datenbank zu protokollieren. Für die Qualitäts-Kontrolle wird oft verlangt, die verwendeten Vorgaben und die berechneten Ergebnisse zu protokollieren.