Numerik-Bibliothek für Lazarus
- photor
- Beiträge: 512
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 3.2 (Gtk2) FPC 3.2.2
- CPU-Target: 64Bit
Numerik-Bibliothek für Lazarus
Hallo Forum,
ich habe schon mal hier im Forum gesucht, aber nicht wirklich was gefunden. Ich suche eine Bibliothek mit der ich z.B. Integrale numerisch berechnen kann. Später kommen vielleicht noch andere Aufgaben hinzu, wie Matrizen- und Vektor-Rechnung, Lösen von Gleichungssystemen, Nullstellensuche etc.
Im Prinzip wäre etwas wie die "Numerical Recipes" in Lazarus recht schön; die "Numerical Recipes in C" habe ich hier. Bevor ich jetzt anfange, das ganze von C in Pascal zu Übersetzen (mit all den Fehlermöglichkeiten) wollte ich frage, ob es eine Numerik- oder Mathe-Bibliothek für Lazarus/Delphi gibt.
Danke für jeden Tipp
Photor
ich habe schon mal hier im Forum gesucht, aber nicht wirklich was gefunden. Ich suche eine Bibliothek mit der ich z.B. Integrale numerisch berechnen kann. Später kommen vielleicht noch andere Aufgaben hinzu, wie Matrizen- und Vektor-Rechnung, Lösen von Gleichungssystemen, Nullstellensuche etc.
Im Prinzip wäre etwas wie die "Numerical Recipes" in Lazarus recht schön; die "Numerical Recipes in C" habe ich hier. Bevor ich jetzt anfange, das ganze von C in Pascal zu Übersetzen (mit all den Fehlermöglichkeiten) wollte ich frage, ob es eine Numerik- oder Mathe-Bibliothek für Lazarus/Delphi gibt.
Danke für jeden Tipp
Photor
Re: Numerik-Bibliothek für Lazarus
Ich habe von der Materie zwar nicht viel Ahnung, aber ich bin stolzer Besitzer eines Zugangs zur Suchmaschinen wie Google.
Die spucken dann z.B. sowas aus:
http://www.efg2.com/Lab/Library/Delphi/ ... tm#Sources" onclick="window.open(this.href);return false;
Die spucken dann z.B. sowas aus:
http://www.efg2.com/Lab/Library/Delphi/ ... tm#Sources" onclick="window.open(this.href);return false;
-
- Beiträge: 90
- Registriert: Fr 2. Nov 2007, 13:32
- OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
- CPU-Target: 32Bit
- Wohnort: Ulm
Re: Numerik-Bibliothek für Lazarus
Für Matrizen und Vektoren nimm am besten die Unit Matrix, die der FPC mitliefert. Diese arbeitet mit überladenen Operatoren, d.h. Matrizenmultiplikation von 2 Matrizen A und B heißt dann im Quellcode einach "A * B".
Für die numerischen Berechnungen von Integralen, Ableitungen, Nullstellensuche etc. könnten Dir Google oder z.B. die Routinen aus Promathika weiterhelfen.
Für die numerischen Berechnungen von Integralen, Ableitungen, Nullstellensuche etc. könnten Dir Google oder z.B. die Routinen aus Promathika weiterhelfen.
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Re: Numerik-Bibliothek für Lazarus
Das Buch "Numerical Reciepes in Pascal" gibt es schon sehr lange (bzw. neu wird es das wohl nicht mehr geben) . Zu finden ist das Buch auch irgendwo in wiss. Bibliotheken. Bei http://nr.com" onclick="window.open(this.href);return false; gibts wohl auch Code. ...
Achja und wie immer schön drauf achten was man wie verwenden darf
...
Achja und wie immer schön drauf achten was man wie verwenden darf

Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
-
- Beiträge: 351
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Numerik-Bibliothek für Lazarus
Hier
http://books.google.de/books?id=rCcSST0 ... &q&f=false" onclick="window.open(this.href);return false;
kann man auch mal reinschauen. Hab' ich mir gekauft um numerisch DGL's zu lösen. Ist für'n Anfang nicht sooo schlecht.
Gruß
Volker
http://books.google.de/books?id=rCcSST0 ... &q&f=false" onclick="window.open(this.href);return false;
kann man auch mal reinschauen. Hab' ich mir gekauft um numerisch DGL's zu lösen. Ist für'n Anfang nicht sooo schlecht.
Gruß
Volker
-
- Beiträge: 134
- Registriert: So 30. Nov 2008, 21:53
Re: Numerik-Bibliothek für Lazarus
Versuch mal TPMath, ist auch via SourceForge oder als DMath (Specific version for Delphi, FreePascal (FPC) and Lazarus) erhältlich, Lizenz ist LGPL:
Gruß FrankTPMath is a mathematical library for Pascal compilers. It is entirely written in Pascal and does not depend on external libraries. TPMath provides routines and demo programs for numerical analysis, including mathematical functions, probabilities, matrices, optimization, linear and nonlinear equations, integration, Fast Fourier Transform, random numbers, statistics.
- photor
- Beiträge: 512
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 3.2 (Gtk2) FPC 3.2.2
- CPU-Target: 64Bit
Re: Numerik-Bibliothek für Lazarus
TPMath kommt dem, was ich suche schon recht nahe (AKA könnte genau das sein, was ich suche). Könnte sage ich auch nur, weil bei dem Versuch die Lib mal eben zu kompilieren, folgendes passierte:indianer-frank hat geschrieben:Versuch mal TPMath, ist auch via SourceForge oder als DMath (Specific version for Delphi, FreePascal (FPC) and Lazarus) erhältlich, Lizenz ist LGPL:
Code: Alles auswählen
photor@Worf:~/Lazarus/TPMath/dll> ./fpcompil.sh
Free Pascal Compiler version 2.4.0-2 [2010/02/20] for x86_64
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling tpmath.dpr
Compiling /home/photor/Lazarus/TPMath/units/utypes.pas
Compiling /home/photor/Lazarus/TPMath/units/uminmax.pas
[...]
Compiling /home/photor/Lazarus/TPMath/units/upca.pas
Compiling /home/photor/Lazarus/TPMath/units/ueval.pas
ueval.pas(286,3) Note: Local variable "ErrCode" is assigned but never used
ueval.pas(69,10) Note: Local variable "e" is assigned but never used
Compiling /home/photor/Lazarus/TPMath/units/uplot.pas
Fatal: Can't find unit graph used by uplot
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)
Free Pascal Compiler version 2.4.0-2 [2010/02/20] for x86_64
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling tpmath.pas
2065 lines compiled, 0.0 sec
photor@Worf:~/Lazarus/TPMath/dll>uname -a
Linux Worf 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux
Infos zum System:
Debian Gnu Linux auf ATHLON AMD64; Free Pascal Compiler version 2.4.0-2 [2010/02/20] for x86_64, installierte Lazarus-Version: 0.9.28.2-12beta (das, was mit Debian Testing mitgeliefert wird)
Das werde ich wohl tiefer einsteigen müssen. Hat jemand Tipps?
Danke für eure Hilfe
Photor
-
- Beiträge: 134
- Registriert: So 30. Nov 2008, 21:53
Re: Numerik-Bibliothek für Lazarus
Ich denke, der TPmath-Autor hat es sich hier zu einfach gemacht: Es wird nur zwischen Delphi und Nicht-Delphi unterschieden. FPC/Lazerus kennen aber offensichtlich weder Graph noch Graphics. Falls Du das Plotten benötigst: Es scheint ja noch eine TeX-Plot-Unit zu geben, also kann man wohl alles rauswerfen, was auf UPlot und UWinPlot verweist.
Eine weitere allgemeine Numerik-Sammlung für FPC/Pascal ist http://www.alglib.net/, hier allerdings wird zZ in der neuesten Version 3.3 noch nicht Pascal unterstützt. Die letzen Pascalversionen sind Version 2.6 (zB http://www.alglib.net/translator/re/alg ... pascal.zip)
Etwas spezieller (zB ohne Integration), aber mit höherer Genauigkeit ist die AMath-Sammlung.
Eine weitere allgemeine Numerik-Sammlung für FPC/Pascal ist http://www.alglib.net/, hier allerdings wird zZ in der neuesten Version 3.3 noch nicht Pascal unterstützt. Die letzen Pascalversionen sind Version 2.6 (zB http://www.alglib.net/translator/re/alg ... pascal.zip)
Etwas spezieller (zB ohne Integration), aber mit höherer Genauigkeit ist die AMath-Sammlung.
- photor
- Beiträge: 512
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 3.2 (Gtk2) FPC 3.2.2
- CPU-Target: 64Bit
Re: Numerik-Bibliothek für Lazarus
Scheint wohl wirklich so zu seinindianer-frank hat geschrieben:Ich denke, der TPmath-Autor hat es sich hier zu einfach gemacht: Es wird nur zwischen Delphi und Nicht-Delphi unterschieden. FPC/Lazerus kennen aber offensichtlich weder Graph noch Graphics. Falls Du das Plotten benötigst: Es scheint ja noch eine TeX-Plot-Unit zu geben, also kann man wohl alles rauswerfen, was auf UPlot und UWinPlot verweist.

Hm. Auf die bin ich schon mal gestoßen. Weiß nicht mehr, warum ich sie schließlich nicht weiter angesehen habe. Vielleicht, weil ich gerade nicht sehe, wie man die Lib compiliert. Dass es nicht die allerneueste Version ist, stört mich nicht, solange richtig gerechnet wird.indianer-frank hat geschrieben:Eine weitere allgemeine Numerik-Sammlung für FPC/Pascal ist http://www.alglib.net/, hier allerdings wird zZ in der neuesten Version 3.3 noch nicht Pascal unterstützt. Die letzen Pascalversionen sind Version 2.6 (zB http://www.alglib.net/translator/re/alg ... pascal.zip)
Danke für den Link. Sieht auch interessant aus, es fehlt aber genau, was ich im Moment am meisten suche: num. Integration.indianer-frank hat geschrieben:Etwas spezieller (zB ohne Integration), aber mit höherer Genauigkeit ist die AMath-Sammlung.
Danke indianer-frank
Ciao,
Photor
-
- Beiträge: 351
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Numerik-Bibliothek für Lazarus
Hallo und noch ein gesundes und schönes neues Jahr an Alle!
Im Zusammenhang mit der Numerikbibliothek für Lazerus habe ich mal eine Frage, denn bei grober Durchsicht der Doku zu TPMath ist mitr das nicht aufgefallen.
Ich bin auf der Suche nach einer Möglichkeit Vektoren zu generieren so ähnlich wie in Scilab, mit Schrittweite (siehe Beispiel).
tr = [0:dt:tR];
vr = v/3.6 * ones(1,length(tr));
Gibt es so etwas für Lazarus?
Viele Grüße
Volker
Im Zusammenhang mit der Numerikbibliothek für Lazerus habe ich mal eine Frage, denn bei grober Durchsicht der Doku zu TPMath ist mitr das nicht aufgefallen.
Ich bin auf der Suche nach einer Möglichkeit Vektoren zu generieren so ähnlich wie in Scilab, mit Schrittweite (siehe Beispiel).
tr = [0:dt:tR];
vr = v/3.6 * ones(1,length(tr));
Gibt es so etwas für Lazarus?
Viele Grüße
Volker
Re: Numerik-Bibliothek für Lazarus
Nicht fertig aus der Tüte, aber was spricht gegen ein paar Zeilen Code?
Code: Alles auswählen
type
TVector = array of Double;
function CreateEquiDistPts(StartValue, Dist, EndValue: Double): TVector;
var
i: Integer;
x: Double;
begin
SetLength(Result, trunc((EndValue - StartValue)/dist)+2); // etwas mehr als Schutz vor Rundungsfehlern
i := 0;
x := StartValue;
while x <= Endvalue do begin
Result[i] := x;
x := x + Dist;
inc(i);
end;
SetLength(Result, i);
end;
-
- Beiträge: 351
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Numerik-Bibliothek für Lazarus
Guten Morgen,
ich bin beim stöbern im Netz auf "Armadillo" http://arma.sourceforge.net/ gestoßen. Leider finde ich keine "Übersetzung" nach Freepascal.
Hilft da h2pas weiter? Denn hier: http://wiki.freepascal.org/C_to_Pascal steht, dass h2pas keine Quellen übersetzt.
Viele Grüße
Volker
ich bin beim stöbern im Netz auf "Armadillo" http://arma.sourceforge.net/ gestoßen. Leider finde ich keine "Übersetzung" nach Freepascal.
Hilft da h2pas weiter? Denn hier: http://wiki.freepascal.org/C_to_Pascal steht, dass h2pas keine Quellen übersetzt.
Viele Grüße
Volker
-
- Beiträge: 210
- Registriert: Do 24. Jan 2013, 21:22
Re: Numerik-Bibliothek für Lazarus
Hallo Photor,
hier noch nen Sack voll Links , teils mit Pascal-Code.
http://www.thesatya.com/sem3.html
https://infohost.nmt.edu/~armiller/pascal.htm
https://rosettacode.org/wiki/Numerical_integration
https://de.wikipedia.org/wiki/Simpsonregel
https://de.wikipedia.org/wiki/Trapezregel
http://mathworld.wolfram.com/topics/Num ... ation.html
Gruß
Frank
hier noch nen Sack voll Links , teils mit Pascal-Code.
http://www.thesatya.com/sem3.html
https://infohost.nmt.edu/~armiller/pascal.htm
https://rosettacode.org/wiki/Numerical_integration
https://de.wikipedia.org/wiki/Simpsonregel
https://de.wikipedia.org/wiki/Trapezregel
http://mathworld.wolfram.com/topics/Num ... ation.html
Gruß
Frank
www.flz-vortex.de
Re: Numerik-Bibliothek für Lazarus
Beim Überfliegen der anderen Posts in diesem Thread ist mir aufgefallen, die die hauseigene Numerik-Bibliothek numlib gar nicht erwähnt ist. Der Autor hatte allerdings eine Vorliebe für kryptische Namen, und Vektoren und Matrizen werden als Var-Parameter für das 1.Element mit der Anzahl der Elemente übergeben, aber genaugenommen ist das genial, weil man die Daten nicht erst in den passenden Datentyp der Numerik-Bibliothek umkopieren muss. Und seitdem es eine längere Dokumentation im wiki gibt (http://wiki.lazarus.freepascal.org/NumLib_Documentation), kann man auch nicht mehr sagen, das ganze wäre nicht zu verwenden.
-
- Beiträge: 351
- Registriert: Di 17. Feb 2009, 10:44
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Numerik-Bibliothek für Lazarus
Hallo,
vielen Dank für die Links und Hinweise.
Mir ging es schlicht um die "Bequemlichkeit"
Ich wollte nicht andauernd irgendwelche for-Schleifen bemühen sondern eine etwas einfachere Handhabe z.B. beim Umgang mit Vektoren.
Sowas:
Python (vorher import numpy as np): s = np.concatenate([sR, sS[1:len(sS)] + sR[len(sR) - 1], sB[1:len(sB)] + sS[len(sS) - 1] + sR[len(sR) - 1]])
Scilab bzw. NSP: s = [sR,sS(1,2:length(sS))+sR(length(sR)),sB(1,2:length(sB))+sS(length(sS))+sR(length(sR))];
oder v = v * 3.6 Da wird gleich jedes Element des Vektors v mit 3.6 multipliziert. Ebenso Matrizen. Oder eine Multplikation zwischen zwei Matrizen oder einer und einem Vektor funktioniert mit dem Mal-Operator (*) C = A*B. Die Dimensionen müssen natürlich passen. Transponieren einfach ein Hochstrich (') oder in Armadillo: Matrix.t().
Viele Grüße
Volker
Die Numlib Bibliothek ähnelt der DMath. Da sind schöne Solver für DGL enthalten.
vielen Dank für die Links und Hinweise.
Mir ging es schlicht um die "Bequemlichkeit"

Sowas:
Python (vorher import numpy as np): s = np.concatenate([sR, sS[1:len(sS)] + sR[len(sR) - 1], sB[1:len(sB)] + sS[len(sS) - 1] + sR[len(sR) - 1]])
Scilab bzw. NSP: s = [sR,sS(1,2:length(sS))+sR(length(sR)),sB(1,2:length(sB))+sS(length(sS))+sR(length(sR))];
oder v = v * 3.6 Da wird gleich jedes Element des Vektors v mit 3.6 multipliziert. Ebenso Matrizen. Oder eine Multplikation zwischen zwei Matrizen oder einer und einem Vektor funktioniert mit dem Mal-Operator (*) C = A*B. Die Dimensionen müssen natürlich passen. Transponieren einfach ein Hochstrich (') oder in Armadillo: Matrix.t().
Viele Grüße
Volker
Die Numlib Bibliothek ähnelt der DMath. Da sind schöne Solver für DGL enthalten.