AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Delphi FUNKTIONSPLOTTER

FUNKTIONSPLOTTER

Ein Thema von Dipl Phys Ernst Winter · begonnen am 19. Mai 2009 · letzter Beitrag vom 17. Okt 2009
Antwort Antwort
Dipl Phys Ernst Winter
Registriert seit: 14. Apr 2009
Funktionsplotter
Der Funktionsplotter zeichnet Diagramme mit Graphen von
• expliziten Funktionen y = f(x)
• Kurven in Parameterdarstellung x = fx(t), y = fy(t)
• Kurven in Polarkoordinaten r = f(phi)
Die Funktionen können analytisch mit Formeln oder durch Tabellen gegeben sein. Es können Tabellen der Funktionswerte angezeigt und ausgedruckt werden.
Ein Diagramm wird mit max. 2 Graphen in einem wählbaren Diagrammbereich erzeugt. Dem Diagramm können weitere Graphen zugefügt werden. Die Bearbeitung eines Diagramms kann protokolliert werden.
Diagramme können mit ihrem Bereich gespeichert und wieder eingelesen werden. Die Bilder von Diagrammen können als Bitmaps mit 16-Farben für andere Anwendungen exportiert werden.
Diagrammbereich
Der Diagrammbereich wird durch die Grenzen aX, eX und minY, maxY horizontal bzw. vertikal festgelegt.
'winkeltreu' Falls markiert. wird yMin nach den Grenzen aX, eX und yMax so gesetzt, daß winkeltreue Graphen entstehen
'YAuto' verringert für Graphen expliziter Funktionen yMax und yMin entsprechend dem Ordinatenbereich der Stützstellen.
Im Diagramm wird der Bereich durch zwei skalierte Achsen dargestellt.
Graphtypen
• Explizite Funktion y(x) mit maximal 2 Polen im Intervall [aX, eX],
• Parametrische Kurve x(t), y(t), t aus dem Intervall [aT, eT].
• Kurve in Polarkoordinaten mit maximal 2 Ästen. r(t) mit t = Phi, Phi aus dem Intervall [aPhi, ePhi]
bzw. [a2Phi, e2Phi].
• Tabelle für Stützpunkte x(i), y(i) einer Funktion. Enthält die Tabelle nur die Werte y(i), so werden
die x(i) als Folge natürlicher Zahlen gesetzt.
• Tabelle für Stützpunkte t(i), x(i), y(i) einer parametrischen Kurve. Enthält die Tabelle nur die Punkt-
koordinaten x(i), y(i) so werden die t(i) als Folge natürlicher Zahlen gesetzt.
• Tabelle für Stützpunkte phi(i), r(i) einer Kurve in Polarkoordinaten. Enthält die Tabelle nur die
Werte r(i), so werden die phi(i) als Folge natürlicher Zahlen gesetzt.
Der Graphtyp wird als Option für die Graphen 1 bzw. 2 ausgewählt. Er bestimmt, welche Formeln bzw. Tabellenfiles aktuell sind.
Interpolation
Die Funktionen der Graphen werden an äquidistanten Stützstellen definiert, zwischen denen mit natürlichen kubischen Splinefunktion interpoliert wird.
Das Programm definiert für jeden Graphen 3 Arrays von Stützstellen, die verwendet werden für:
• die explizite Funktion y(x) und ihre Fortsetzungen nach dem 1. und 2. Pol.
• die Funktionen x(t), y(t) einer parametrische Kurve.
• die Funktion r(t) für die beiden Äste einer Kurve in Polarkoordinaten.
Zu jedem Array gehört ein Definitionsbereich [aX, eX], [aT, eT] bzw. [aPhi, ePhi]
Die Arrays der Stützpunke können
• mit Funktionen y = f(x), x = f(t), y = f(t) bzw. r = f(phi) mit phi=t berechnet werden.
Die Anzahl der Stützstellen (max. 99) wird für den 1. und 2. Graphen getrennt gesetzt. Die mittleren Stützstellen sind äquidistant. Um die Funktion an Anfang und Ende des Bereiches richtiger darzustellen, werden dort zwei Stützstellen mit 1/4 Schritt eingeschobenen.
• aus Tabellenfiles geladen werden.
Funktionen
Graphen können durch analytische Funktionen y(x), x(t), y(t) bzw. r(phi) definiert werden, nach denen die Stützpunkt-Arrays mit nStep Stützpunkten im Bereich [aX, eX], [aT, eT] bzw. [aPhi, ePhi] erzeugt werden.
Funktionen werden durch eine Formel und Funktionsparameter definiert.
Die Berechnung der Stützstellen und der daraus hergeleiteten SplineFunktionen erfolgt nach Edition der Formel und ihres Darstellungsbereiches mit 'Ok, berechnen'.
Jede Edition der Formel, ihrer Parameter und ihres Laufbereiches macht die Stützstellen und Splines ihres Graphen ungültig.
Berechnung der Funktionswerte
Die Berechnung der Funktionswerter erfolgt mit dem Interpreter aus der Unit Formel.
In den Formeln können neben dem Argument x bzw. t die Funktionsparameter a, b, c, d und w verwendet werden.
Ihre Werte werden zu der Formel eingegeben. Die beiden Funktionen x(t) und y(t) eines Graphen verwenden die gleichen Werte für die Funktionsparameter a, b, c, d, und w.
Der Parameter w ist für Winkel (im Bogenmaß) ausgelegt. Der Parameter w wird in Grad eingegeben, mit w werden u = cos(w) und v = sin(w) bereitgestellt.
Laufzeitfehler treten bei der Verwendung der Formel auf. Sie führen meistens nur zur Begrenzung des Darstellungsbereiches bzw. zum Erkennen eines Pols.
Ein Syntaxtest wird bei der Übernahme einer Formel (mit Funktion|Ok) durchgeführt. Hierzu wird der Funktionswert an der Stelle x = (ta + te)/2 berechnet.
Laufbereiche für x, t und phi
• Die Abszissen einer expliziten Funktion f(x) laufen von xa bis xe.
• Der Parameter t in x(t) und y(t) parmetrischer Kurven läuft von aT bis eT.
• Bei Graphen in Polarkoordinaten stellt t den Winkel phi dar. Seine Laufbereiche aPhi..ePhi und
a2Phi..e2Phi (für einen 2.-Ast) werden in Grad eingegeben.
Wird ein Laufbereich geändert, so müssen die Stützstellen und Splinefunktionen des Graphen neu berechnet werden.
Stützpunkt-Tabellen
Für explizite und polare Graphen können die Stützpunkte geladen werden aus Tabellen vom Typ
* WERTE mit den Ordinaten y. Die Abszissen werden als Folge natürlicher Zahlen generiert
* ORDI mit Anfangswert xa, Schritt dx und den Ordinaten y. Die Abszissen werden im Abstand dx ab xa generiert
* KOORD2 mit Abszissen und Ordinaten geladen werden.
Für parametrische Graphen können die Stützpunkte geladen werden aus Tabellen vom Typ
* KOORD2 mit den Ordinaten x und y. t wird als Folge natürlicher Zahlen generiert.
* KOORD3 mit dem Parameter t und den Ordinaten x, y. Die Parameter t müssen eine aufsteigende Folge bilden.
Tabellenfiles erzeugen sie mit den Programmen WerteTabelle, OrdiTabelle, Koord2Tabelle, Koord2Tabelle aus dem Ordner Tabellen und mit dem programmierbaren Tabellenrechner.
Die Formelbibliotheken
ZumFunktionsplotter gibt es Bibliotheken für Formeln f(x) bzw. f(t), die in xFormel.dat bzw. yFormel.dat gespeichert sind. xFormel.dat und yFormel.dat sind Textdateien, die Sie mit dem Editor bearbeiten können. Vermeiden Sie dabei die Verwendung von Tabs.
Splines für Graphen expliziter Funktionen
Eine Funktion y = f(x) die im Intervall [xa, xe] einen Pol enthält kann nicht durch eine Splinefunktion interpoliert werden, da sie an der Stelle des Poles nicht stetig ist.
Um die Anzeige von Graphen expliziter Funktionen mit Polen zu ermöglichen, wird das Intervall an den Polstellen unterteilt. Hierzu bildet das Programm nur Arrays von Stützstellen, deren Ordinate den mit yMin und yMax gegebenen Darstellungsbereich nicht überschreiten.
Soll eine Stützstelle mit einer außerhalb von [yMin -0.02*(yMax-yMin), yMax + 0.02*(yMax-yMin)] gelegenen Ordinate gebildet werden, so wird das aktuelle Array abgeschlossen und nach der nächsten Stützstelle, die im Darstellungsbereich liegt, gesucht. Nach dem ersten Stützpunktarray des Graphen wird von dort aus ein zweites, nach dem zweiten ein drittes angelegt, dann bricht der Graph ab.
Es ist Aufgabe des Anwenders zur Berechnung der Splinefunktionen den Bereich [yMin, yMax] geeignet zu setzen. Ist er zu klein, so entsteht eine große Lücke im Graphen, ist er zu groß, so kann eventuell ein Pol nicht erkannt werden.
Beispiele
Der Menübefehl 'Beispiele|zeigen' öffnet ein Panel mit einer Auswahlliste der Beispiele. Nach Auswahl eines Beispiels werden die von seiner Formel verwendeten Funktionsparameter mit einem erläuternden Prompt auf dem Panel zur Edition bereitgestellt.
'Ok' übernimmt das Beispiel als Graph 1, bildet die Stützstellen und Spleins und zeigt den Graphen an.
Kegelschnitte• Ellipse um Mittelpunkt
• Parabel um Scheitelpunkt
• Hyperbeln
• Kegelschnitte (polar)
Spiralen• Archimedische Spirale
• Logarithmische Spirale
• Hyperbolische Spirale
Zykloiden
• Zykloide
• Epizykloide
• Hypozykloide
• Kardioide
• Astroide
Schwingungen Bemerkenswerte Kurven
• Harmonische Schwingung • Zissoide
• Ausschwingvorgang • Strophoide
• Amplitudenmodulation • Konchoide des Nikomedes
• Frequenzmodulation • Kartesisches Blatt
• Lissajousfiguren • Traktrix
• Schwingung auf Kreis • Kettenlinie
Die Beispiele sind in der typisierten Datei 'Beispiele.Dat' gespeichert. 'Beispiele|editieren' öffnet ein Dialogfenster, um diese zu bearbeiten.
Anzeige Wertetabelle
Der Menübefehl 'Anzeigen|Werte' öffnet ein Dialogfenster mit dem man Tabellen der die Graphen bestimmenden Funktionen anzeigen und drucken kann. Das Fenster ist kompakt gehalten, damit es möglichst wenig vom Diagramm verdeckt,
'Tabelle' Auswahl Graph 1 oder Graph 2
'Ast' bei polaren Graphen mit 2 Ästen Auswahl Ast 1 oder Ast 2.
'Dez' Die Anzahl der Dezimalstellen läßt sich für Abszissen und Ordinatenwerte getrennt setzen.
Bei Graphen parametrischer Kurven werden die Tabellen der Werte der Funktionen x(t) und y(t) hintereinander ausgegeben (aber nebeneinander gedruckt!).
Anzeige Stützstellen
Der Menübefehl 'Anzeigen|Stützstellen' öffnet ein Dialogfenster mit dem man die Stützstellen der Graphen anzeigen kann. Verwenden Sie diese Anzeige zur Klärung unerwarteter Ergebnisse.

Ich möchte mich bei allen entschuldigen, weil ich wieder einmal einen Beitrag gepostetet habe, der Laufzeitpackeges verwendet. Hier jetzt das richtige Archiv.
Angehängte Dateien
Dateityp: zip funktionsplotter_133.zip (348,4 KB, 126x aufgerufen)
Autor: DP Ernst Winter
 
Fridolin Walther

 
Delphi 2009 Professional
 
#2
  Alt 19. Mai 2009, 16:47
OT: Ich mag zum Thema zwar nichts sagen, da es sich sowohl meines Interessen- als auch meines Kenntnisgebiets entzieht, aber ich wollte mich dafür bedanken, daß Du die SFX Archive sein gelassen hast und ein klassisches ZIP Archiv zum Download anbietest. Dankeschön dafür.
Fridolin Walther
  Mit Zitat antworten Zitat
Dennis_Wolfram

 
Delphi 2010 Enterprise
 
#3
  Alt 19. Mai 2009, 17:53
Hallo ich bin grad beim durch schnuppern des Forums und bin dabei auf deinen Beitrag gestoßen und möchte dir sagen: MEIN RESPEKT – HUT AB!!! Wirklich eine sehr gute Arbeit. Ich hoffe ja, dass ich irgendwann mal auch zu so einer Meisterleistung des „delphinierens“ fähig bin. Wirklich! Bin schwer beeindruckt!
LG Dennis
Dennis Wolfram
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
 
#4
  Alt 19. Mai 2009, 17:59
Moin, Moin,

Ich frag mich grade, ob das Programm nicht besser in der Sparte "Open-Source" aufgehoben wäre. Schließlich handelt es sich um einen funktionsfähigen Funktionenplotter ( ).

Gruß,
Daniel

P.S.: Das Schreiben in GROSSBUCHSTABEN wird im Forum eher als Schreien interpretiert. Man sollte im Regelfall lieber drauf verzichten.

//Die Unit "Formel.pas" fehlt...
米斯蘭迪爾
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

 
Delphi 2007 Architect
 
#5
  Alt 19. Mai 2009, 18:06
Ich stimme zu, gute Arbeit
Marcel
  Mit Zitat antworten Zitat
Dipl Phys Ernst Winter

 
Delphi 3 Professional
 
#6
  Alt 19. Mai 2009, 19:14
Zitat:
//Die Unit "Formel.pas" fehlt...
Nachgetragen
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#7
  Alt 19. Mai 2009, 20:28
Hallo

Ich habe Funktionsplotter.dpr geöffnet, compiliert und erhalte folgende Meldung (D6):
[Fatal Error] Required package 'EWMath' not found
Thomas
  Mit Zitat antworten Zitat
quendolineDD

 
Turbo Delphi für Win32
 
#8
  Alt 19. Mai 2009, 21:08
Habe Funktionsplotter.dpr geöffnet, compiliert und bekomme folgenden Fehler (Delphi 2007)
[DCC Fehler] E2202 Package 'VCL30' wird benötigt, konnte aber nicht gefunden werden

Den Fehler von toms habe ich nicht.

Edit. Delphi 2009
[DCC Fataler Fehler] E2202 Package 'VCL30' wird benötigt, konnte aber nicht gefunden werden
Gleicher Fehler.
Lars S.
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

 
FreePascal / Lazarus
 
#9
  Alt 19. Mai 2009, 21:13
Zitat von quendolineDD:
Habe Funktionsplotter.dpr geöffnet, compiliert und bekomme folgenden Fehler (Delphi 2007)
[DCC Fehler] E2202 Package 'VCL30' wird benötigt, konnte aber nicht gefunden werden
Das gleiche Problem hier.

Wenn ich versuch deine mitgelieferte *.exe zu starten kommt folgender Fehler:

Code:
---------------------------
Funktionsplotter.exe - Komponente nicht gefunden
---------------------------
Die Anwendung konnte nicht gestartet werden, weil VCL30.dpl nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben.
---------------------------
OK  
---------------------------
Dabei würd ich´s so gerne testen.

Edit:

Habs rausbekommen, deaktiviert mal folgendes, dann gehts:
"Project" -> "Optionen" -> "Packages" -> "Laufzeit-Packages verwenden"

Nur jetzt fehlt "Convert.dcu". ;( Edit #2: Einfach aus den uses rausnehmen und es kompiliert.
  Mit Zitat antworten Zitat
17. Okt 2009, 13:34
Dieses Thema wurde von "fkerber" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Open-Source" verschoben.
Passt besser nach OpenSource.
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf