Unit Mathe

Zur Vorstellung von Komponenten und Units für Lazarus

Unit Mathe

Beitragvon heizkoerper » 2. Aug 2011, 18:30 Unit Mathe

Hallo Mathe-Fans, :mrgreen:

hoffentlich gibt es die auch.

In vielen Jahren habe ich eine Formelsammlung erstellt.

Diese möchte ich zur Verfügung stellen.

Viel Erfolg bei der Anwendung.

Gruß Heizkoerper
Mathe.pas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
heizkoerper
 
Beiträge: 24
Registriert: 1. Aug 2011, 13:39
Wohnort: Hannover
OS, Lazarus, FPC: Windows XP und 7, L 0.9.31, FPC 2.4.4 | 
CPU-Target: 32 und 64 Bit
Nach oben

Beitragvon af0815 » 2. Aug 2011, 21:38 Re: Unit Mathe

heizkoerper hat geschrieben:In vielen Jahren habe ich eine Formelsammlung erstellt.
Diese möchte ich zur Verfügung stellen.

Um hier gleich mal die Frage zu stellen -> Welche Lizenz ? LGPL ?! Ohne Lizenz, ist die Sammlung für andere Personen oft wertlos, weil man nicht sicher ist, wie man die Routinen einsetzen darf.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3479
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon indianer-frank » 3. Aug 2011, 08:49 Re: Unit Mathe

Unabhängig von der fehlenden Lizenz, ist auch aus inhaltlichen Gründen von der Unit abzuraten.

1. Es wird zwar extended gerechnet, die Ergebnisse erreichen aber selten Extended-Genauigkeit. Dann wird der völlig legale Wert ErgebnisFehler=1E2200 als Fehlerindikator benutzt! Der Wert is noch viel viel kleiner als die Wurzel der größten Extendedzahl! Warum nicht INF oder NAN???

2. Völlig willkürlich Rangebeschränkungen:
a) Fehler in FCPas für FresnelC(123) = 0.50258788525009001821
b) Fehler in LiPas für Li(64) = 21.934668328050995189
c) Fehler in CihPas für Chi(123) = 0.10736460288318749037e52
usw
usw

3. Weitgehende Mißachtung der Erkenntnisse der letzen 50 Jahre zu Rundungsfehler etc. ZB wird die alte Formelsammlungsdefinition benutzt für sinh(x) = (Exp(x)-Exp(-x))/2 . Mathematische ist sinh(x) = x + x^3/6 +.. also sinh(x) >= x für kleine x. Was liefert die Funktion?

sinh(1e-15)=9.99986768737692877E-0016

Also sinh(x) < x! Außerdem ist der relative Fehler zum Ergebnis 1.00000000000000E-0015 mehr als 1.3E-5 und das bei einer Extended-Genauigkeit von 1.1E-19! Und wie befürchtet, ist sinh(x) = 0 statt sinh(x) = x für abs(x) <= 1e-20.

Fazit: Wenn eine genaue, vollständige, freie Opensource-Bibliothek für Pascal gebraucht wird, die die Extended-Genauigkeit wirklich erreicht, gibt es zZ nur die AMath-Bibliothek:
-> http://home.netsurf.de/wolfgang.ehrhardt/misc_de.html#amath

Für die, die mit Double zufrieden sind, kann man noch TPMath empfehlen:
-> http://www.unilim.fr/pages_perso/jean.debord/tpmath/tpmath.htm

Die ausführliche (leider nur englische) Einführung und Funktionsliste von AMath kann man auch online einsehen:
-> http://home.netsurf.de/wolfgang.ehrhardt/amath_functions.html

Gruß Frank
indianer-frank
 
Beiträge: 133
Registriert: 30. Nov 2008, 21:53

Beitragvon marcov » 3. Aug 2011, 12:33 Re: Unit Mathe

indianer-frank hat geschrieben:Fazit: Wenn eine genaue, vollständige, freie Opensource-Bibliothek für Pascal gebraucht wird, die die Extended-Genauigkeit wirklich erreicht, gibt es zZ nur die AMath-Bibliothek:
-> http://home.netsurf.de/wolfgang.ehrhardt/misc_de.html#amath


Dann muss ich deine Bugreports für Numlib vermisst haben :-)
marcov
 
Beiträge: 1034
Registriert: 5. Aug 2008, 08:37
Wohnort: Eindhoven (Niederlande)
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk) | 
CPU-Target: 32/64,PPC(+64), ARM
Nach oben

Beitragvon heizkoerper » 3. Aug 2011, 13:56 Re: Unit Mathe

af0815 hat geschrieben:
heizkoerper hat geschrieben:In vielen Jahren habe ich eine Formelsammlung erstellt.
Diese möchte ich zur Verfügung stellen.

Um hier gleich mal die Frage zu stellen -> Welche Lizenz ? LGPL ?! Ohne Lizenz, ist die Sammlung für andere Personen oft wertlos, weil man nicht sicher ist, wie man die Routinen einsetzen darf.


Die Routinen habe ich alle selber entwickelt. Es gibt also keine Lizenzprobleme.
heizkoerper
 
Beiträge: 24
Registriert: 1. Aug 2011, 13:39
Wohnort: Hannover
OS, Lazarus, FPC: Windows XP und 7, L 0.9.31, FPC 2.4.4 | 
CPU-Target: 32 und 64 Bit
Nach oben

Beitragvon heizkoerper » 3. Aug 2011, 14:22 Re: Unit Mathe

indianer-frank hat geschrieben:Unabhängig von der fehlenden Lizenz, ist auch aus inhaltlichen Gründen von der Unit abzuraten.

1. Es wird zwar extended gerechnet, die Ergebnisse erreichen aber selten Extended-Genauigkeit. Dann wird der völlig legale Wert ErgebnisFehler=1E2200 als Fehlerindikator benutzt! Der Wert is noch viel viel kleiner als die Wurzel der größten Extendedzahl! Warum nicht INF oder NAN???

2. Völlig willkürlich Rangebeschränkungen:
a) Fehler in FCPas für FresnelC(123) = 0.50258788525009001821
b) Fehler in LiPas für Li(64) = 21.934668328050995189
c) Fehler in CihPas für Chi(123) = 0.10736460288318749037e52
usw
usw

3. Weitgehende Mißachtung der Erkenntnisse der letzen 50 Jahre zu Rundungsfehler etc. ZB wird die alte Formelsammlungsdefinition benutzt für sinh(x) = (Exp(x)-Exp(-x))/2 . Mathematische ist sinh(x) = x + x^3/6 +.. also sinh(x) >= x für kleine x. Was liefert die Funktion?

sinh(1e-15)=9.99986768737692877E-0016

Also sinh(x) < x! Außerdem ist der relative Fehler zum Ergebnis 1.00000000000000E-0015 mehr als 1.3E-5 und das bei einer Extended-Genauigkeit von 1.1E-19! Und wie befürchtet, ist sinh(x) = 0 statt sinh(x) = x für abs(x) <= 1e-20.

Fazit: Wenn eine genaue, vollständige, freie Opensource-Bibliothek für Pascal gebraucht wird, die die Extended-Genauigkeit wirklich erreicht, gibt es zZ nur die AMath-Bibliothek:
-> http://home.netsurf.de/wolfgang.ehrhardt/misc_de.html#amath

Für die, die mit Double zufrieden sind, kann man noch TPMath empfehlen:
-> http://www.unilim.fr/pages_perso/jean.debord/tpmath/tpmath.htm

Die ausführliche (leider nur englische) Einführung und Funktionsliste von AMath kann man auch online einsehen:
-> http://home.netsurf.de/wolfgang.ehrhardt/amath_functions.html

Gruß Frank



Hallo Frank,

vielen Dank für die konstruktive Kritik und die interessanten Links.

Die Routinen habe ich alle selber entwickelt, Lizenzprobleme dürfte es also nicht geben.

Ich hatte nie vor, bei allen Funktionen eine extrem hohe Genauigkeit zu erhalten.

Die Algorithmen habe ich versucht so einfach wie möglich zu schreiben. Jeder kann sie sich seinen Bedürfnissen anpassen.

Die Routinen sind ein Abfallprodukt beim Entwickeln eines Formelcompilers.

Vor vielen Jahren als die Rechner noch viel langsamer waren, habe ich in einem interessanten Buch (Coprozessoren Programmierung mit Turbo Pascal und C++) einen Formelcompiler entdeckt, welcher die Routinen direkt in 387-Maschinencode umsetzt und ausführt.

Dieser Compiler ist natürlich sehr schnell. Ich habe ihn auch für 32bit-Programme wie Delphi weiterentwickelt.

Dieser Compiler arbeitet nur mit Extended-Zahlen, weil diese direkt vom Coprozessor ausgeführt werden.

Bei den heutigen schnellen Rechnern ist Maschinenspracheinsatz kaum noch nötig. Außerdem ist man hardwareabhängig.

Also habe ich den Formelcompiler wieder hardwareunabhängig gemacht. Er rechnet aber trotzdem mit Extended-Zahlen. Deswegen ergeben auch alle Funktionen ein Extended-Ergebnis, auch bei denen, welche nur ein boolesches- oder ShortInt-Ergebnis haben.

Die Hyperbelfunktionen werde ich wohl als Reihe entwickeln.

Viele Grüße
heizkoerper
 
Beiträge: 24
Registriert: 1. Aug 2011, 13:39
Wohnort: Hannover
OS, Lazarus, FPC: Windows XP und 7, L 0.9.31, FPC 2.4.4 | 
CPU-Target: 32 und 64 Bit
Nach oben

Beitragvon indianer-frank » 3. Aug 2011, 14:26 Re: Unit Mathe

marcov hat geschrieben:
indianer-frank hat geschrieben:Fazit: Wenn eine genaue, vollständige, freie Opensource-Bibliothek für Pascal gebraucht wird, die die Extended-Genauigkeit wirklich erreicht, gibt es zZ nur die AMath-Bibliothek:
-> http://home.netsurf.de/wolfgang.ehrhardt/misc_de.html#amath


Dann muss ich deine Bugreports für Numlib vermisst haben :-)

Du meinst die optimale FPC Numlib? Ein paar kurze Bemerkungen dazu beschränkt auf Elementare und Spezielle Funktionen:

Erstens werden Math-Funktionen noch mal geliefert, allerdings unter sehr phantasievollen Namen: zB speach für arccosh usw.

Zweitens ist extended precision zwar möglich (bei mir ist macheps=1.0842021724855044E-0019, giant=9.9918856055392512E+4931), Range und Genauigkeit werden aber nicht voll ausgenutzt. Beispiele:

spegam(200) = Gamma(200) crasht, obwohl Gamma(200)= 0.39432893368239525178e373 verschwindet klein ist im Vergleich zu giant.

speefc(20) = 5.3958656116078825E-0176 hat eine relativen Fehler von 31473 macheps im Vergleich zu erfc(20) = 0.53958656116079009289e-175; und speefc(30) liefert gar 0 statt 0.25646562037561116000e-392.

Drittens: Die Numlib-Funktionen sind ein echter Fortschritt zu Math, allerdings fragt man sich dann doch, warum Otto-Normal-FPC-User die ungenauen Math-Routinen im wesentlichen als Default untergejubelt erhält: Warum habt Ihr nicht diese Funktionen in Math eingebaut?
indianer-frank
 
Beiträge: 133
Registriert: 30. Nov 2008, 21:53

Beitragvon pluto » 3. Aug 2011, 19:03 Re: Unit Mathe

Warum habt Ihr nicht diese Funktionen in Math eingebaut?

Es wird bestimmt Gründe geben. Vielleicht reicht den Normalen Benutzer eine einfache Mathe Unit. Aber selbst ich stoße langsam an die Grenzen von den Datentypen. Selbst wenn ich auf int64 umsteigen würde, würde ich das "Problem" nur verschieben.
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6672
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.3 | 
CPU-Target: AMD
Nach oben

Beitragvon rds » 4. Nov 2014, 19:24 Re: Unit Mathe

indianer-frank hat geschrieben:Unabhängig von der fehlenden Lizenz, ist auch aus inhaltlichen Gründen von der Unit abzuraten.

1. Es wird zwar extended gerechnet, die Ergebnisse erreichen aber selten Extended-Genauigkeit. Dann wird der völlig legale Wert ErgebnisFehler=1E2200 als Fehlerindikator benutzt! Der Wert is noch viel viel kleiner als die Wurzel der größten Extendedzahl! Warum nicht INF oder NAN???

2. Völlig willkürlich Rangebeschränkungen:
a) Fehler in FCPas für FresnelC(123) = 0.50258788525009001821
b) Fehler in LiPas für Li(64) = 21.934668328050995189
c) Fehler in CihPas für Chi(123) = 0.10736460288318749037e52
usw
usw

3. Weitgehende Mißachtung der Erkenntnisse der letzen 50 Jahre zu Rundungsfehler etc. ZB wird die alte Formelsammlungsdefinition benutzt für sinh(x) = (Exp(x)-Exp(-x))/2 . Mathematische ist sinh(x) = x + x^3/6 +.. also sinh(x) >= x für kleine x. Was liefert die Funktion?

sinh(1e-15)=9.99986768737692877E-0016

Also sinh(x) < x! Außerdem ist der relative Fehler zum Ergebnis 1.00000000000000E-0015 mehr als 1.3E-5 und das bei einer Extended-Genauigkeit von 1.1E-19! Und wie befürchtet, ist sinh(x) = 0 statt sinh(x) = x für abs(x) <= 1e-20.

Fazit: Wenn eine genaue, vollständige, freie Opensource-Bibliothek für Pascal gebraucht wird, die die Extended-Genauigkeit wirklich erreicht, gibt es zZ nur die AMath-Bibliothek:
-> http://home.netsurf.de/wolfgang.ehrhardt/misc_de.html#amath

Für die, die mit Double zufrieden sind, kann man noch TPMath empfehlen:
-> http://www.unilim.fr/pages_perso/jean.debord/tpmath/tpmath.htm

Die ausführliche (leider nur englische) Einführung und Funktionsliste von AMath kann man auch online einsehen:
-> http://home.netsurf.de/wolfgang.ehrhardt/amath_functions.html

Gruß Frank


Leider ist die angegebnene Seite "http://home.netsurf.de/wolfgang.ehrhardt/misc_de.html#amath" nicht erreichbar :x
rds
 
Beiträge: 17
Registriert: 4. Nov 2014, 18:32

Beitragvon wp_xyz » 4. Nov 2014, 20:53 Re: Unit Mathe

Das Internet vergisst nichts: http://www.archive.org/web/web.php - hier ist eine Kopie der Seite vom 2.Jan 2011 gespeichert
wp_xyz
 
Beiträge: 2651
Registriert: 8. Apr 2011, 08:01

• Themenende •

Zurück zu Units/Komponenten



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried