| Autor |
Nachricht |
otze
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.01.2004
Beiträge: 7180
|
otze Mitglied
20:28:55 13.04.2012 Titel: |
Welche Konvention für Dreiecksmatrizen fidnet ihr natürlicher? |
Zitieren |
Hi,
das ist, glaube ich, eine recht spezielle Frage. Das Grundproblem ist folgendes:
nehmt an, ihr würdet eine Funktion schreiben, die auf Dreiecksmatrizen arbeitet. Zum Beispiel einen Gleichungssystemlöser für Gleichungen der Form:
Ax=b
wobei A entweder eine obere oder untere Dreiecksmatrix ist und A auch transponiert werden darf. Das Transponieren einer oberen Dreiecksmatrix hat leider zur Folge, das aus ihr eine untere Dreiecksmatrix wird (und umgekehrt). Dadurch ergibt sich nun ein Konventionsproblem:
| C++: | A=untere Dreiecksmatrix
solve(A,x,lower);//okay, A ist untere Dreiecksmatrix
//A ist ganz klar immer noch eine untere Dreiecksmatrix
solve(A.transpose(),x,lower);
//andererseits ist das Ergebnis des transpose aufrufs eine obere...
solve(A.transpose(),x,upper); | |
Das Problem ergibt sich gerade dadurch, dass ich versuche zwei BLAS-Bibliotheken zu verknüpfen, die da unterschiedliche Konventionen haben (uBLAS macht letzteres, ATLAS ersteres). Was findet ihr besser? |
_________________ Jesus Christus! Da blickt ja kein Mensch mehr durch.
|
|
 |
Michael E.
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5712
|
Michael E. Mitglied
23:34:16 13.04.2012 Titel: |
Re: Welche Konvention für Dreiecksmatrizen fidnet ihr natürlicher? |
Zitieren |
| otze schrieb: | [cpp]
A=untere Dreiecksmatrix
solve(A,x,lower);//okay, A ist untere Dreiecksmatrix
//A ist ganz klar immer noch eine untere Dreiecksmatrix
solve(A.transpose(),x,lower); |
Aber A ist nicht der Parameter der Funktion, sondern A.transpose(), was eine obere Dreiecksmatrix ist. Sprich: Dieser Aufruf würde mich total verwirren. Eine Matriximplementierung sollte sich nach außen wie eine naive Implementierung verhalten. Wenn ich auf eine naive Implementierung transpose aufrufe, hat solve gar keine Chance mehr herauszufinden, dass der Parameter ursprünglich mal eine untere Dreiecksmatrix war. |
_________________ Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|