Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Rund um die Programmierung ::  Welche Konvention für Dreiecksmatrizen fidnet ihr natürlicher?     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
otze
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.01.2004
Beiträge: 7180
Beitrag 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
Beitrag 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/)
c++.de :: Rund um die Programmierung ::  Welche Konvention für Dreiecksmatrizen fidnet ihr natürlicher?   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




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.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.