Theorietestat #4: Beispiel-Comparator vergleicht NICHT den Rang der Matrizen

LukasPhysiker
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Mai 2017 13:05

Theorietestat #4: Beispiel-Comparator vergleicht NICHT den Rang der Matrizen

Beitrag von LukasPhysiker » 29. Jun 2017 20:56

In der Beschreibung zum Comparator-Beispiel in der AUD_T4_Beiblatt.pdf wird behauptet, dass dieser Comparator den Rang einer Matrix vergleicht. Der Rang einer Matrix die Anzahl der voneinander linear unabhängigen Zeilen oder Spalten. Der Rang ist also eine ganze Zahl.

In der Methode compare wird einfach der Kosinus des Winkels zwischen jedem Paar von Spalten addiert und diese Kosinussummen werden dann verglichen. Dieser Vergleich wird nicht immer das gleiche zurückliefern wie ein tatsächlicher Vergleich vom Rang zweier Matrizen. Hier ist ein Gegenbeispiel:

Code: Alles auswählen

     / 1  2 \
A = |        |
     \ 3  4 /
	 

     / 5  6 \
B = |        |
     \ 7  8 /
Wie man schnell überprüfen kann, sind bei beiden Matrizen die beiden Spalten linear unabhängig voneinander, damit haben beide Matrizen den Rang 2. Der Comparator würde hier aber folgende Kosinussummen berechnen: ca = 0,9899 und cb = 0,9997. Das sind zwei unterschiedliche Werte und damit würde der Comparator hier 1 zurückliefern, obwohl er 0 zurückliefern müsste.

Damit der Algorithmus wirklich das tut, was er behauptet zu tun, sollten die Kosinuswerte nicht aufsummiert werden, sondern nur die Kosinuswerte, die 0 (oder nicht 0) sind zählen. Die Matrix, die mehr Kosinuswerte mit dem Wert 0 hat, hat dann den höheren Rang (diese Anzahl ist aber nicht einfach der Rang). Vielleicht sollte man dann auch alle Werte mit einem Betrag von weniger als z.B. 2^-10 als 0 zählen, um Gleitkommaungenauigkeiten auszugleichen.

invariant
Mausschubser
Mausschubser
Beiträge: 65
Registriert: 6. Mai 2017 19:01

Re: Theorietestat #4: Beispiel-Comparator vergleicht NICHT den Rang der Matrizen

Beitrag von invariant » 4. Jul 2017 22:02

Hallo,

ich kann zu der konkreten Funktionsweise leider nichts sagen, da das Programm nicht von mir stammt.
Ich glaube Ihnen durchaus das Sie Recht haben, und wir überprüfen das sobald wir dazu kommen.
Wichtig für das vierte Testat ist, dass Sie sich mit Comparatoren beschäftigen.

Gruß

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Theorietestat #4: Beispiel-Comparator vergleicht NICHT den Rang der Matrizen

Beitrag von SophiaLi1 » 6. Jul 2017 16:01

Hab mich auch schon über diese Methode gewundert.

LukasPhysiker
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Mai 2017 13:05

Re: Theorietestat #4: Beispiel-Comparator vergleicht NICHT den Rang der Matrizen

Beitrag von LukasPhysiker » 15. Jul 2017 12:04

Ich muss auch gerade meine letzte Aussage im Post korrigieren, damit keiner davon verwirrt wird: Es reicht nicht, zu schauen, ob die Kosinuswerte für jedes Paar von Spalten null sind, denn wenn beispielsweise bei einer 3x3-Matrix alle drei Spalten paarweise linear unabhängig voneinander sind, müssen sie nicht insgesamt linear unabhängig sein, denn eine Spalte könnte sich als Linearkombination der anderen beiden schreiben lassen. In dem Fall wäre der Rang ja höchstens 2.

Man sieht also, dass der Vergleich des Rangs zweier Matrizen eigentlich viel komplizierter ist und natürlich werden die Gleitkommaungenauigkeiten alles sehr unzuverlässig machen.

Antworten

Zurück zu „Archiv“