Mitprogrammierer gesucht an Matrix Unit
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Mitprogrammierer gesucht an Matrix Unit
Ich bin angefangen einige Dokumenten zu scannen:
http://www.stack.nl/~marcov/numlib/" onclick="window.open(this.href);return false;
und habe auch etwas Allgemeines geschrieben unter
http://wiki.freepascal.org/numlib" onclick="window.open(this.href);return false;
Neben dies braucht man auch unbedingt das packages/numlib Verzeichnis ins FPC Quellarchiv.
Traude: weil du an Matrices Transformationen interessiert bist, habe ich unit OMV am ersten getan. Siehe dich auch "preface.pdf" an, mit das Inhaltsverzeichnis der Dokumentation. Gibt ein gutes Übersicht.
http://www.stack.nl/~marcov/numlib/" onclick="window.open(this.href);return false;
und habe auch etwas Allgemeines geschrieben unter
http://wiki.freepascal.org/numlib" onclick="window.open(this.href);return false;
Neben dies braucht man auch unbedingt das packages/numlib Verzeichnis ins FPC Quellarchiv.
Traude: weil du an Matrices Transformationen interessiert bist, habe ich unit OMV am ersten getan. Siehe dich auch "preface.pdf" an, mit das Inhaltsverzeichnis der Dokumentation. Gibt ein gutes Übersicht.
-
- Beiträge: 203
- Registriert: Di 22. Sep 2009, 13:08
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Mitprogrammierer gesucht an Matrix Unit
Etwas spät, aber wen das ganze Thema interessiert, dem würde ich empfehlen sich z.B. mal das Buch
Numerical Recipes (in C++) anzusehen:
http://www.nr.com/" onclick="window.open(this.href);return false;
Kapitel 2 behandelt recht ausführlich Matrizen.
Früher (in den 80ig-ern) gab es von dem Buch sogar mal eine Version für Pascal.
(Numerical Recipes in Pascal) - eventuell bekommt man das sogar noch.
Numerical Recipes (in C++) anzusehen:
http://www.nr.com/" onclick="window.open(this.href);return false;
Kapitel 2 behandelt recht ausführlich Matrizen.
Früher (in den 80ig-ern) gab es von dem Buch sogar mal eine Version für Pascal.
(Numerical Recipes in Pascal) - eventuell bekommt man das sogar noch.
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Mitprogrammierer gesucht an Matrix Unit
War das kein Lizenz Problem? Man durfte glaub ich die Beispiel Quellen nicht frei distribuieren.Patito hat geschrieben:Etwas spät, aber wen das ganze Thema interessiert, dem würde ich empfehlen sich z.B. mal das Buch
Numerical Recipes (in C++) anzusehen:
http://www.nr.com/" onclick="window.open(this.href);return false;
Kapitel 2 behandelt recht ausführlich Matrizen.
Früher (in den 80ig-ern) gab es von dem Buch sogar mal eine Version für Pascal.
(Numerical Recipes in Pascal) - eventuell bekommt man das sogar noch.
-
- Beiträge: 203
- Registriert: Di 22. Sep 2009, 13:08
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Mitprogrammierer gesucht an Matrix Unit
Sicherlich. Wörtlich da abschreiben sollte man sicher nicht. Aber im Prinzip steht da eh nur das gröbst drin. Wenn man ein konkretes Problem lösen will, muß man die ganze Feinarbeit ja eh selbst machen. Meine Anregung war nur zum Lernen gedacht.marcov hat geschrieben:War das kein Lizenz Problem? Man durfte glaub ich die Beispiel Quellen nicht frei distribuieren.Patito hat geschrieben:Etwas spät, aber wen das ganze Thema interessiert, dem würde ich empfehlen sich z.B. mal das Buch
Numerical Recipes (in C++) anzusehen:
http://www.nr.com/" onclick="window.open(this.href);return false;
Kapitel 2 behandelt recht ausführlich Matrizen.
Früher (in den 80ig-ern) gab es von dem Buch sogar mal eine Version für Pascal.
(Numerical Recipes in Pascal) - eventuell bekommt man das sogar noch.
Insgesamt würde ich zum Thema noch ganz allgemein folgendes anmerken:
Eine "einzig wahre" Art und Weise eine Matrix programmiertechnisch umzusetzen gibt es sicher nicht.
Je nach Anwendungsfall muß man die Daten ganz unterschiedlich ablegen.
Dünn besetzte Matrizen würde ich im Speicher definitiv anders ablegen als voll besetzte, etc..
Auch halte ich für mathematische Sachen Operator-Overloading nicht für wirklich angebracht.
Es gibt immer mehrere Arten und Weisen wie man die ganzen Algorithmen umsetzen kann.
z.B.:
- optimiert auf Speicherverbrauch
- optimiert auf Laufzeit
- optimiert unter Ausnutzung konkreter Gegebenheiten (dünn besetzte Matrizen, ...)
- schneller (ungenauer) Schätzer
- mit/ohne einer Art Ergebnis-Cache (um nicht mehrmals dasselbe Teilergebnis ausrechnen zu müssen)
...
Von vorneherein ist einfach nicht wirklich klar welche der Methoden man dann zum "+" oder "*" erklären soll.
Und nicht jede Methode passt immer gleich gut.
Außerdem:
Um mit Matrizen-Gruppen rumzuspielen fand ich GAP recht nützlich:
http://www.gap-system.org/" onclick="window.open(this.href);return false;
-
- 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: Mitprogrammierer gesucht an Matrix Unit
paar kleine Kommentare von mir:
zu dem Buch: Numerical recipes in Pascal. - Auch mit Diskette (5,25") erschienen .... ok damals waren die computerressourcen etwas knapper also musste man spärlicher damit umgehn ...
zu Matrix-Unit: Da hatte sich wohl schon mal jemand etwas arbeit angefangen was in FPC auch enthalten ist. Genauer hab ich mir das nicht angesehn... scheint im schnelldurchlauf meines Erachtens aber nicht sooo toll für Sachen die ich mir so bei Matrixoperationen vorstelle. Ich verwende meistens dyn. Arrays.... öfter auch mal schwach besetzt.
zu Operatoren: also ich würde A x B als A * B schreiben lassen und für mich ist auch ein A + B ziemlich eindeutig. Es kann aber sein, dass es da noch andere Interpretationen gibt die mir nicht so geläufig sind und daher die vermeintliche Eindeutigkeit rührt. Ich persönlich fände auch + und - für TPoints ganz gut und ein TControl.Position:TPoint.
zu Solvern: Bin mir nicht so sicher ob man da wirklich nen Standard direkt eingebunden in FPC anbieten sollte, eben aus dem schon genannten Grund der Vor-und Nachteile je nach Problemstellung. Aus meiner momentanen Sicht fände ich Solver als externe(s) Package(s) besser aufgehoben, letztenendes bin ich da aber kein Entscheider.
zu dem Buch: Numerical recipes in Pascal. - Auch mit Diskette (5,25") erschienen .... ok damals waren die computerressourcen etwas knapper also musste man spärlicher damit umgehn ...
zu Matrix-Unit: Da hatte sich wohl schon mal jemand etwas arbeit angefangen was in FPC auch enthalten ist. Genauer hab ich mir das nicht angesehn... scheint im schnelldurchlauf meines Erachtens aber nicht sooo toll für Sachen die ich mir so bei Matrixoperationen vorstelle. Ich verwende meistens dyn. Arrays.... öfter auch mal schwach besetzt.
zu Operatoren: also ich würde A x B als A * B schreiben lassen und für mich ist auch ein A + B ziemlich eindeutig. Es kann aber sein, dass es da noch andere Interpretationen gibt die mir nicht so geläufig sind und daher die vermeintliche Eindeutigkeit rührt. Ich persönlich fände auch + und - für TPoints ganz gut und ein TControl.Position:TPoint.
zu Solvern: Bin mir nicht so sicher ob man da wirklich nen Standard direkt eingebunden in FPC anbieten sollte, eben aus dem schon genannten Grund der Vor-und Nachteile je nach Problemstellung. Aus meiner momentanen Sicht fände ich Solver als externe(s) Package(s) besser aufgehoben, letztenendes bin ich da aber kein Entscheider.
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Mitprogrammierer gesucht an Matrix Unit
Vorschlag: Zum Thema numlib ist es sinnvoll einen neuennThread eröffnen. Ich glaube, das es das Thema dieses Threads deutlich verlässt.
Andi
Andi
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Mitprogrammierer gesucht an Matrix Unit
Das ist ja lustig: Den Text kann man lesen, ohne je Niederländisch gelernt zu haben! Das macht die Sprache natürlich sehr sympathisch...marcov hat geschrieben:http://www.stack.nl/~marcov/numlib/

Nun: Ich kenne mich mit den Lazarus-Internas nicht so aus, daher weiß ich nicht, wie ich die numlib einbinden kann. Bei einem einfachen "uses numlib" kommt es zur Fehlermeldung
und auf dieser Seite klingt es an, dass die Einbindung der NumLib ein komplizierterer Prozess zu sein scheint: http://www.at.freepascal.org/packages/numlib.html" onclick="window.open(this.href);return false;/usr/bin/ld: cannot find -lTpNumLib
In jedem Fall verstehe ich nicht, wie man das macht:
Viele Grüße, EuklidAll units can be compiled into a library, and the library routines can be accessed through the tpnumlib unit.
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Mitprogrammierer gesucht an Matrix Unit
Deutsche Freunde sagen das ein bisschen Platt-Deutsch Kenntnisse helfen kannEuklid hat geschrieben:Das ist ja lustig: Den Text kann man lesen, ohne je Niederländisch gelernt zu haben! Das macht die Sprache natürlich sehr sympathisch...marcov hat geschrieben:http://www.stack.nl/~marcov/numlib/![]()
Numlib.pas war der unit um ein DLL zu machen. Es wird nicht genutzt. Nutze die Namen der units (sle,det,roo usw, siehe preface.pdf). Ich werde kompilation von numlib.pas unterbinden.Nun: Ich kenne mich mit den Lazarus-Internas nicht so aus, daher weiß ich nicht, wie ich die numlib einbinden kann. Bei einem einfachen "uses numlib" kommt es zur Fehlermeldung
Das ist alt. Am einfachsten ist zu versuchen die Programmen ins packages/numlib/examples zu kompilieren
und auf dieser Seite klingt es an, dass die Einbindung der NumLib ein komplizierterer Prozess zu sein scheint: http://www.at.freepascal.org/packages/numlib.html" onclick="window.open(this.href);return false;
In jedem Fall verstehe ich nicht, wie man das macht:
Viele Grüße, EuklidAll units can be compiled into a library, and the library routines can be accessed through the tpnumlib unit.
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Mitprogrammierer gesucht an Matrix Unit
Ok, danke. Werde es so nocheinmal versuchen, sobald ich es benötige.
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Mitprogrammierer gesucht an Matrix Unit
Thema numlib geht hier im Thread Package numlib weiter.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Mitprogrammierer gesucht an Matrix Unit
Stimmt, aber das gilt für alle Ressourcen, nicht nur Numeric methods in xx.Patito hat geschrieben:Sicherlich. Wörtlich da abschreiben sollte man sicher nicht. Aber im Prinzip steht da eh nur das gröbst drin. Wenn man ein konkretes Problem lösen will, muß man die ganze Feinarbeit ja eh selbst machen. Meine Anregung war nur zum Lernen gedacht.marcov hat geschrieben:
War das kein Lizenz Problem? Man durfte glaub ich die Beispiel Quellen nicht frei distribuieren.
Das würde Cache/Speicher technisch günstiger sein, aber kann auch Negativ auspacken, wenn manInsgesamt würde ich zum Thema noch ganz allgemein folgendes anmerken:
Eine "einzig wahre" Art und Weise eine Matrix programmiertechnisch umzusetzen gibt es sicher nicht.
Je nach Anwendungsfall muß man die Daten ganz unterschiedlich ablegen.
Dünn besetzte Matrizen würde ich im Speicher definitiv anders ablegen als voll besetzte, etc..
oft zwischen die beide Formats konvertieren muss.
Ich auch nicht, weil das Typen nicht wirklich limitierend ist, aber sicher machen das alles Korrekt ist.Auch halte ich für mathematische Sachen Operator-Overloading nicht für wirklich angebracht.
Performance-technisch ist Operator-Overloading basierter nicht sehr günstig weil es drei-adres Notation ist (A=B+C, wenn man vielleicht keinen neu Alloziertes Speicher nötig hat, in Gegensatz zu normalen integer Kalkulationen, kosten mehr dynamisch allozierte Zwischenresultate mit Matrices extra Zeit )
- optimiert auf relatif kleine Matrices mit Saturation und SIMD (fuer 3D anwendungen)Es gibt immer mehrere Arten und Weisen wie man die ganzen Algorithmen umsetzen kann.
z.B.:
- optimiert auf Speicherverbrauch
- optimiert auf Laufzeit
- optimiert unter Ausnutzung konkreter Gegebenheiten (dünn besetzte Matrizen, ...)
- schneller (ungenauer) Schätzer
- mit/ohne einer Art Ergebnis-Cache (um nicht mehrmals dasselbe Teilergebnis ausrechnen zu müssen)