Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MInverse liefert anderes Ergebnis als MINV

MInverse liefert anderes Ergebnis als MINV
17.03.2014 17:08:54
Frank
Hallo an Alle,
ich verwende in VBA die Function MInverse. Und obwohl die Ausgangsmatrix (G) identisch zu den Daten in Excel ist (D518:O529) ergeben sich stark unterschiedliche Ergebnisse und ich weiß nicht warum. Wär bitte jemand so lieb und könnte da mal nachsehen?
https://www.herber.de/bbs/user/89699.xls
Vielen Dank und viele Grüße
Frank

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das stimmt schon mal nicht, ...
17.03.2014 18:01:08
Luc:-?
…Frank,
was auch nicht weiter verwunderlich ist, da es sich um dieselbe Fkt handelt. In deiner Abb scheinst du ja auch etwas ganz Anderes mit den invertierten Werten vgln zu wollen… Wat'n nu?
Gruß Luc :-?

AW: Das stimmt schon mal nicht, ...
17.03.2014 18:12:26
Frank
Hallo Luc,
wieso stimmt das nicht was ich geschrieben habe? Also wenn ich im Debugmodus stoppe und mir die Werte von der Matrix G ansehe, dann sind diese identisch zu dem markierten Bereich in der Datei (D518:O529). Nun verwende ich im Code MInverse und vergleiche die Ergebnisse von g1 mit den Werten in Excel (D533:O544). Wähle ich bspw. bolß ein kleines Feld einer Matrix von 4x4, dann stimmen die Ergebnisse Excel/VBA überein. Und wie erklärt sich das?

Anzeige
Ich habe deine ermittelten Werte einfach in ...
17.03.2014 18:25:24
Luc:-?
…dafür vorgesehenen Zellbereich ausgegeben, Frank,
→ keinerlei Abweichung von MINV! Aber du scheinst ja auch Äpfel und Birnen vgln zu wollen. Die invertierte Matrix heißt m1, nicht g1! g1 resultiert aus der PolynomialFkt!
Luc :-?

AW: Ich habe deine ermittelten Werte einfach in ...
17.03.2014 18:29:33
Frank
Hallo Luc,
kann es sein, dass du im Modul 2 anstatt im Modul 1 nachgesehen hast? Ich meine die Function PolynomRegRel. Das ist das Problem. Aus diesem Grund habe ich Modul 2 angelegt und testhalber die Daten über die Schleife(n) eingelesen. Dort ergeben sich die selben Werte wie in Excel. Aber beim Ausführen von PolynomRegRel irgendwie nicht :-(.

Anzeige
Ja, hab' ich! Aber woher soll ich wissen, ...
17.03.2014 20:33:09
Luc:-?
…Frank,
warum du was wie getan hast, wenn du nicht explizit darauf hinweist (Modul1 hat nicht gereicht)… ;-)
Wenn ich mir deine Ausgangsdaten so ansehe, muss ich feststellen, dass du in die (Schein-)Genauig­keitsfalle getappt bist. Man arbeitet einfach nicht mit Dezimalzahlen unbestimmter, also uneinheitlicher Genauigkeit. Ein Berechnungswert kann stets nur so genau sein wie der in die Berechnung eingehende ungenaueste Primärwert. Die Daten müssen also entsprechend gerundet wdn, bevor mit ihnen weitergearbeitet wdn kann. Das hätte allerdings auch schon der Autor der PolynomialFkt berücksichtigen können bzw sollen. VBA könnte hier mit größerer scheinbarer Genauigkeit arbeiten als Xl. Das wirkt sich bei Invertierungen besonders fatal aus. Invertiere in deinem Test doch einfach mal die auf unterschiedliche Stellenzahlen gerundeten Ausgangsdaten! → Du wirst zu jeder Stellenzahl ein anderes Ergebnis erhalten, dessen scheinbare Genauigkeit folglich irrelevant, weil nur vorgetäuscht ist. Das liegt halt an der falschen Berechnungsmethodik, die einfachste sinnvolle Regeln unberücksichtigt lässt. :->
Luc :-?

Anzeige
AW: Ja, hab' ich! Aber woher soll ich wissen, ...
17.03.2014 21:23:41
Frank
Guten Abend Luc,
und immer wieder danke für deine hilfreichen Antworten. Sowas in der Art (Ungenauigkeit) hatte ich bereits vermutet. Allerdings hatte ich die Zahlen in Excel kopiert und als Werte wieder eingefügt um sie mit den errechneten Werten in VBA zu vergleichen. So, da waren alle Werte mit den mir dort angezeigten Nachkommastellen identisch. Als nächsten Versuch habe ich die Daten in Mathcad eingelesen und die Inverse gebildet, mit dem Ergebnis, dass ich nun 3 verschiedene Ergebnisse hatte. Ich bin nun drauf und dran den die Inverse von Hand zu berechnen, um einfach zu erfahren, welcher Wert der "Wahrheit" am nächsten kommt. Hast du noch einen Tipp - ich meine irgendein Ergebnis muss doch stimmen? Wer hat die richtigen Ergebnisse Excel oder der Autor dieser netten Funktion? Darüber hinaus habe ich weiter probiert und die Funktion RGP verwendet, die verblüffend genaue Ergebnisse liefert. Nur leider weiß ich gerade nicht, wie ich die Funktion in einen Code einbaue, um beleibiege Koeffizienten berechnen zu können (n variabel).
=INDEX(RGP($B$2:$B$515;$A$2:$A$515^{1.2.3.4.5.6.7.8.9.10.11});1;I3)
Und auch hier wieder deutlich andere Ergebnisse als Excel (mit MINV und den daraus resultierenden Koeffizienten) bzw. der Funktion des Autors. Das ist alles in allem ziemlich frustrierend, wie ich finde :o). Resultiert die Ungenauigkeit durch die sehr großen Zahlen und der "mitgenommenen" Nachkommastellen beim Invertieren? Prinzipiell habe ich angenommen, dass die Funktion MINV und MInverse das selbe machen.... aber das ist anscheinend nicht so. Was denkst du?
Beste Grüße,
Frank

Anzeige
nochmal anders gefragt...
17.03.2014 21:38:40
Frank
...
die Scheingenauigkeit die du angedeutet hast...Wo genau bin ich da in die Falle getreten? Ist diese Scheingenauigkeit für normale Anwender unwichtig und wenn nein, wie vermeide ich diesen Fehler?
Gibt es deiner Meinung nach Verbesserungen zu der Funkion vom Autor um das vermeintlich falsche Ergebnis zu vermeiden, das würde mir sehr weiterhelfen? Wie gesagt habe ich die Zahlen miteinander vergleichen, wie soll ich anhand von visuellen Ergebnissen feststellen, dass ich in eine Scheingenauigkeitsfalle getappt bin?

nochmal anders gefragt...
17.03.2014 21:38:41
Frank
...
die Scheingenauigkeit die du angedeutet hast...Wo genau bin ich da in die Falle getreten? Ist diese Scheingenauigkeit für normale Anwender unwichtig und wenn nein, wie vermeide ich diesen Fehler?
Gibt es deiner Meinung nach Verbesserungen zu der Funkion vom Autor um das vermeintlich falsche Ergebnis zu vermeiden, das würde mir sehr weiterhelfen? Wie gesagt habe ich die Zahlen miteinander vergleichen, wie soll ich anhand von visuellen Ergebnissen feststellen, dass ich in eine Scheingenauigkeitsfalle getappt bin?

Anzeige
Du hast jetzt mehrere Fragen gestellt, ...
18.03.2014 00:29:32
Luc:-?
…Frank,
2 davon hatte ich eigentlich schon beantwortet…
1. die DezimalenAnzahlen der Ausgangsdaten stimmen ggf nicht überein → hier sollte auf die kleinste Dezimalenanzahl gerundet wdn. Auch das Einkopieren als Wert ändert daran nichts, die überzähligen, scheingenauen Dezimalen wdn davon nicht beeinflusst.
2. Das sind keine 2 Fktt, sondern nur 2 Aufrufarten für dieselbe Fkt. Es könnte aber sein, dass mehr Dezimalen berechnet wdn als Xl darstellen kann. Aber die sind ja wohl ohnehin überflüssig, weil nur scheingenau. Also muss spätestens vor dem Invertieren auf eine vernünftige Stellenzahl (hart) gerundet wdn (mit vbFkt Round ).
3. Jede Fkt rechnet sicher auf ihre Weise richtig, nur ist die Ausgangslage nur schein-einheitlich, da jede Software und jede Umgebung etwas anders damit umgeht. Also sollte diese Ausgangslage durch Normieren per Rundung vereinheitlicht wdn.
4. Eine Verbesserung der Fkt wäre mit etwas Aufwand durchaus möglich, aber ggf nicht unbedingt erforderlich → runde die Ausgangswerte sinnvoll bei Übergabe an die Fkt! Allerdings setzt sich die Fkt aus 2 Teilen zusammen, zwischen denen eigentlich ebenfalls eine Rundung sinnvoll wäre. Das wurde vom Autor der Fkt versäumt und könnte/sollte besser nachgeholt wdn (zB mit Aufnahme eines weiteren Arguments Genauigkeit ⇒ Anzahl der Dezimalen), falls man diesen Teil nicht ohnehin besser in die ZellFml auslagert (oder geht dieser Teil etwa auf dich zurück?).
5. Andere Fktt bzw Software könnte/n das schon berücksichtigt haben, was dann auch die ErgebnisUnterschiede erklären würde.
Morrn, Luc :-?

Anzeige
AW: Du hast jetzt mehrere Fragen gestellt, ...
18.03.2014 09:25:18
Frank
Guten Morgen Luc,
die Nacht war etwas unruhig und mir kam immer wieder deine Formulierung Scheingenauigkeitsfalle in den Sinn :o). Ich habe gestern Abend weiter rumprobiert und auch mit der Funktion RGP gearbeitet. Ich habe mich nun damit abgefunden, dass die Funktion PolyRegRel ungenau arbeitet. Allerdings ist es auch so, dass wenn ich Excel heranziehe um mir Polynomkoeffizienten mit beliebigen m zu ermitteln (im angehangenen Beispiel 11), ich für die Koeffizienten sehr viel andere Werte erhalte als mit der Funktion RGP. Ich habe hierzu die Pdf die man auf der Seite
http://www.rzbt.haw-hamburg.de/dankert/info2_2a.pdf
findet verwendet (Seite 8 Formel 2.12). Darüber hinaus habe ich dir die Datei angehangen, um zu sehen welche Unterschiede sich bei der Ermittlung der Koeffizienten ergeben (nach PDF T519:T530, nach RGP R537:R549). Nun stellen sich für mich 2 Fragen.
Frage 1: Wieso funktioniert Formel 2.12 nicht?
Frage 2: Welches Berechnungsverfahren steckt hinter RGP (ich möchte das gern selbst über Formel verstehen)? (Ich weiß in der Hilfe steht hierzu, dass es
nach der Methode der kleinsten Fehlerquadrate rechnet, aber das gleiche steht auch im Punkt 2.3 der PDF und siehe da ich erhalte eben nicht die Ergebnisse wie die Funktion wie RGP).
Ich wäre dir/euch sehr dankbar, wenn mir jemand helfen könnte. Die Ergebnisse sind Messdaten, die um den "wahren" Wert schwanken. Mit Hilfe dieser Ausgleichsfunktion, möchte ich eine glatte, formschöne Ersatzfunktion erzeugen :o).
https://www.herber.de/bbs/user/89707.zip
Vielen Dank und viele Grüße
Frank

Anzeige
Ich habe jetzt weiter getestet....
18.03.2014 10:32:48
Frank
Die Formel 2.12 aus der PDF ist richtig.
Wenn ich bspw. nur eine Ausgleichsfunktion vom Grad ^6 berechnen, dann sind die Ergebnisse der Vektors mit den Ergebnissen der RGP-Funktion identisch. Erhöhe ich den Polynomgrad auf ^11, dann berechnet Excel völlig falsche Koeffizienten.
Von daher bleibt die Frage bestehen, ob jemand die verwendeten Formeln die RGP benutzt kennt?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige