WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Lapack Subroutinen der Matlab-Funktionen

 

aldarac

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.03.2013, 20:27     Titel: Lapack Subroutinen der Matlab-Funktionen
  Antworten mit Zitat      
Hallo beisammen,

mich würde interessieren, welche LAPACK-Routinen bestimmten MatLab-Funktionen wie qr, svd, chol,... zugrunde liegt. Leider ist hier die Matlab-Dokumentation äußerst sparsam mit solchen Informationen.
Nur bei manchen Funktionen wie etwa lu ist die Routine sogar in der mathworks-Online-Doku angegeben.

Über google findet man aber die Matlab Function Reference, etwa zur Funktion qr:
http://www.weizmann.ac.il/matlab/techdoc/ref/qr.html
wo ganz unten auch wunderbar die LAPACK-Routinen angegeben sind.
Jetzt würde mich interessieren:
* wo bekommt man Informationen über zugrundeliegende LAPACK-Routinen?
* Ist die angegebene Refernz vertrauenswürdig?

Schonmal vielen Dank für eure Hilfe


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.03.2013, 01:23     Titel: Re: Lapack Subroutinen der Matlab-Funktionen
  Antworten mit Zitat      
Hallo aldarac,

Die verlinkte Seite ist eine Kopie der lokalen Matlab Dokumentation, die man einfacher auch per "doc qr" anzeigen kann. Damit gilt dies wohl als vertrauenswürdig.

Die genau interne Implementation stellt MathWorks nicht öffentlich zur Verfügung. Mit hinreichend guten Matlabkenntnissen und Programmiererfahrung kann man als Entwickler bewerben und dann die Source-Codes und die interne Dokumentation lesen.

Das Reverse-Engineering von Matlab ist durch die Lizenzbedingungen nicht gestattet. Ich habe keine rechtlich relevante Ausbildung, aber so weit ich es verstehe, kann man Matlab mit einer selbstkompilierten LAPACK-Bibliothek laufen lassen, die Debug-Informationen ausgibt. Solange man vom Matlab-Executable selbst die Finger lässt, sollte das legal sein. [EDITED]Zumindest in älteren Matlab-Versionen konnte man die verwendeten LAPACK-Bibliotheken manuell auswählen. Aber das kann bereits Auswirkungen auf den Programmablauf haben, sodass das geänderte System keine exakten Aussagen mehr über das Orginal-Setup ermöglicht.[EDITED end]

Und ich würde es trotzdem nicht machen. Denn MathWorks hat jahrelange Erfahrung und viel Knowhow in die Implementierung gesteckt. Das Wissen um die ausgeführten Aufrufe alleine bringt einen dabei gar nicht weiter, weil ja bereits vorher verschiedene Entscheidungen getroffen werden, z.B. Fall-Unterscheidungen für dünn-besetzte, symmetrische, positiv-definite oder anderweitig spezielle Matrizen getroffen werden. Aber dies kann man ja bereits einfach benutzen und es ist auf hunderttausend Rechnern erfolgreich getestet.

Gruß, Jan

Zuletzt bearbeitet von Jan S am 06.03.2013, 10:00, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 06.03.2013, 09:26     Titel:
  Antworten mit Zitat      
Eine rechtliche Aussage möchte ich hier nicht machen, allerdings rate ich dazu das ggf. zu prüfen. Generell ist die Frage nach dem "warum" angebracht? Reine Neugierde? Sollen Verbesserungen ausgelotet werden? Warum dann nicht mit MathWorks zusammen?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.03.2013, 10:26     Titel: Re: Lapack Subroutinen der Matlab-Funktionen
  Antworten mit Zitat      
Hallo aldarac,

Falls ich mich nicht klar genug ausgedrückt habe:
Was nicht dokumentiert ist, gilt als Geschäftsgeheimnis. Deshalb ist eine Anstellung bei MathWorks obligatorisch, um mehr Informationen zu bekommen.
Beim Forschen an den frei verfügbaren Schnittstellen kann es rechtliche Einschränkungen geben. Darauf muss man unbedingt achten. Das Verwenden einer modifizierten LAPACK-Bibliothek klärt manche Fragen, aber nicht alle. Manche Fein-Einstellungen konnte MathWorks so festlegen, dass es auf 99.9% der Rechner aller Matlab-User die besten Ergebnisse liefert. Eine Nachforschung auf einem bestimmten Einzel-Rechner kann da nicht wissenschaftlich stichhaltig sein.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
aldarac

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2013, 13:48     Titel:
  Antworten mit Zitat      
Hallo,

ich danke euch für die Auskunft. Der Grund meiner Frage ist übrigens viel subtiler: ich schreibe gerade an meiner Diss und möchte da ein paar theoretische Aussagen zur Komplexität festhalten. Da es nun oftmals verschiedene Verfahren gibt (etwa bei QR: Householder, Givens oder Modified Gram-Schmidt) interessiere ich mich für die zugrundeliegenden Implementierungen, um hier Aussagen treffen zu können. Ich würde dann immer die Komplexität der Soubroutine angeben, die dann letztendlich von Matlab genutzt wird. Sind natürlich immer nur Schätzwerte, aber da tut man sich bei genauer Kenntnis der entsprechenden LAPACK Subroutinen natürlich deutlich einfacher.

Beste Grüße und danke,
aldarac
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 06.03.2013, 14:43     Titel:
  Antworten mit Zitat      
Hallo,

ich denke, dass MathWorks State of the Art verwendet. Was State of the Art ist, kann man ja recherchieren. Beim QR-Verfahren sind das beispielsweise implizite Shifts, um eine Konvergenzordnung von 3 zu bekommen, usw...

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.03.2013, 16:36     Titel:
  Antworten mit Zitat      
Hallo MaFam,

Es gibt leider keine Liste, was nun die beste State-Of-The-Art Methode ist. Im Allgemeinen ist ein user-freundlicher Worst-Case wichtiger als ein optimaler Best-Case für ein Produkt wie Matlab, dass für den Massenmarkt entwickelt wird. Wie immer bei numerischen Problemen wird in Matlab die Laufzeit gegen die Accuracy abgewogen. Zudem sollen die Executables auf Rechnern unterschiedlicher Bauart das gleiche Ergebnis liefern. Deswegen gibt es in vielen Bibliotheken noch keine MMX-Optimierungen, geschweige denn SSE oder gar AVX.
Mit an das jeweilige Problem angepassten Methoden für die lineare Algebra kann man also im Einzelfall viel Effizienz herausholen. Aber man erkauft die Sekunden Laufzeitgewinn mit Stunden für Debuggen und Testen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 06.03.2013, 17:14     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich meinte nicht die Implementierungen, sondern die Verfahren selbst. Wichtig dabei sind Stabilität und Konsistenz und Konvergenzordnung. Diesbezüglich gibt es ein State of the Art.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.03.2013, 18:56     Titel:
  Antworten mit Zitat      
Hallo MaFam,

Es gibt für Lineare Algebra Aufgaben iterative und nicht-iterative Methoden. Der Ausdruck "Konvergenzordnung" impliziert, dass Du iterativen Methodoen meinst. Hier gibt es zwar sicherlich eine Übereinkunft, was "state of the art" für Spezialfälle ist, aber das ist noch keine allgemeingültige Entscheidung für Einzelfälle.

Es gibt z.B. keine eindeutige Grenze, ab welchem Besetzunggrad Sparse-Matrizen besser iterative oder konstruktive Methoden für eine Zerlegung verwenden sollen. Viele Sparse-Solver sind grottenschlecht für dünnbesetzte winzige Matrizen wie z.B. 4x4. Eine Methode, die Quadratisch konvergiert kann immer noch eine schlechtere Wahl sein, als eine lineare, wenn man weit genug von der Lösung entfernt ist.
Hier muss also eine komplexe numerische Software anhand von Heuristiken entscheiden, welches Verfahren verwendet wird. Und genau das ist ja für den OP von Belang.

Es kann also verschiedene "beste" Methode geben, um kleine, mittlere, große, riesige, sparse, very sparse, block sparse, band-sparse, usw. Matrizen zu zerlegen. Aber das erlaubt keinerlei Aussagen darüber, welche der Methoden Matlab nun in einem konkreten Fall einsetzt.

Siehe http://www.maths.lth.se/na/courses/...../NUM115-11/backslash.html:
Zitat:
If A is symmetric, or Hermitian, and has real positive diagonal elements, then a Cholesky factorization is attempted.

Das klingt eindeutig. Aber wie entscheidet man genau, ob eine 10'000x10'000 Matrix aus numerischer Sicht diagonal ist? Soll das Kriterium einzelne Elemente vergleichen und dabei die absolute und/oder relative Distanz testen? Oder geht man lieber spalten-orientiert vor, z.B. mit der Spalten-Norm (max- oder Euclidische Norm?!) als Grenze?

Ich hatte im Studium gelernt, dass bei der Lösung eines linearen Systems eine Nach-Iteration "state of the art" ist, da sie verblüffend billig ist und Rundungsfehler und Instabilitäten abfangen kann. Trotzdem macht Matlab dies (meines Wissens nach) nicht, sondern es wird dem ausgebildeten Numeriker überlassen, dies manuell in den Algorithmus einzufügen.

Und deshalb lässt sich die Frage für diesen Thread nicht exakt lösen:
Zitat:
* wo bekommt man Informationen über zugrundeliegende LAPACK-Routinen?

Welche LAPACK-Funktion für einen Einzelfall verwendet wird, kann von den Daten abhängen. Also benötigt man den Source-Code für eine zuverlässige Analyse.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2013, 19:55     Titel:
  Antworten mit Zitat      
Hallo aldarac,
Allgemeine Aussagen zur Komplexität werden mitunter sogar unmöglich, da Matlab je nach Inputparametern ganz unterschiedliche Verfahren anwenden kann.

Experimentell könnte man die Laufzeit mit unterschiedlich großen Matrizen ermitteln und dadurch Rückschlüsse auf den verwendeten Algorithmus ziehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 06.03.2013, 22:11     Titel:
  Antworten mit Zitat      
Mir ging es mehr darum, eine allgemeine Aussage zu treffen, weil man hier eben nicht ins Detail gehen kann. Ich denke aber, das ist eher nicht im Sinne des Threadstarters, daher werde ich mich dezent zurückziehen.

@Jan: Ich habe mit meiner Formulierung die geschlossenen Verfahren keinesfalls ausschließen wollen, hab's aber auch unglücklich formuliert....
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.03.2013, 09:54     Titel:
  Antworten mit Zitat      
Hallo Marc,

Die Kompliziertheit des Themas ist bereits in der Orginal-Frage verborgen. Vielen Dank dass Du in der Diskussion genau den Finger in die Wunde der Numerik gelegt hast. 98% der Numerik sind harte Wissenschaft ("state of the art" vorhanden), 1% ist Gefühl, Erfahrung und Hexenwerk (trust the professor), 0.9% ist Willkür aus Unwissenheit oder Ignoranz gegenüber den Ergebnissen anderer Arbeitsgruppen (Talk to people instead of reading papers) und die verbleibenden 0.1% sind Bugs (each student knows it better).

Die Diskussion ist zwar etwas ausgeufert, aber der OP wird so immerhin gewarnt, dass Numerik ein Minenfeld bleibt.

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.