Numerik-Bibliothek für Lazarus

Für Dinge zum Forum, Kritik, Verbesserungsvorschläge, Umfragen und ähnliches.
Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Numerik-Bibliothek für Lazarus

Beitrag von photor »

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

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Numerik-Bibliothek für Lazarus

Beitrag von theo »

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

Thomas B.
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

Beitrag von Thomas B. »

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.

u-boot
Beiträge: 306
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

Beitrag von u-boot »

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 gibts wohl auch Code. ...

Achja und wie immer schön drauf achten was man wie verwenden darf :roll: ...
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

ErnstVolker
Beiträge: 326
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

Beitrag von ErnstVolker »

Hier

http://books.google.de/books?id=rCcSST0 ... &q&f=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

indianer-frank
Beiträge: 134
Registriert: So 30. Nov 2008, 21:53

Re: Numerik-Bibliothek für Lazarus

Beitrag von indianer-frank »

Versuch mal TPMath, ist auch via SourceForge oder als DMath (Specific version for Delphi, FreePascal (FPC) and Lazarus) erhältlich, Lizenz ist LGPL:
TPMath 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.

Gruß Frank

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Numerik-Bibliothek für Lazarus

Beitrag von photor »

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:


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:

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

Also fehlt da offensichtlich noch was. Gesaugt uns ausgepackt habe ich die tpmath081.zip. Er vermisst wohl eine Unit "graph".

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

indianer-frank
Beiträge: 134
Registriert: So 30. Nov 2008, 21:53

Re: Numerik-Bibliothek für Lazarus

Beitrag von indianer-frank »

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/alglib-2.6.0.freepascal.zip)

Etwas spezieller (zB ohne Integration), aber mit höherer Genauigkeit ist die AMath-Sammlung.

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Numerik-Bibliothek für Lazarus

Beitrag von photor »

indianer-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.

Scheint wohl wirklich so zu sein :( . Habe jedenfalls gestern Abend noch eine Info im Netz gefunden, die das nahe legt. Allerdings gab es auch nach Auskommentieren der fehlenden Units immer noch Probleme, die Lib zu kompilieren. Vielleicht probiere ich mal. Kann aber sein, dass ich dann mit weiteren Fragen hier aufschlage.

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/alglib-2.6.0.freepascal.zip)

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:Etwas spezieller (zB ohne Integration), aber mit höherer Genauigkeit ist die AMath-Sammlung.

Danke für den Link. Sieht auch interessant aus, es fehlt aber genau, was ich im Moment am meisten suche: num. Integration.

Danke indianer-frank

Ciao,

Photor

ErnstVolker
Beiträge: 326
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

Beitrag von ErnstVolker »

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

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Numerik-Bibliothek für Lazarus

Beitrag von wp_xyz »

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;

ErnstVolker
Beiträge: 326
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

Beitrag von ErnstVolker »

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


wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Numerik-Bibliothek für Lazarus

Beitrag von wp_xyz »

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.

ErnstVolker
Beiträge: 326
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

Beitrag von ErnstVolker »

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.

Antworten