|
|
Optimization-Toolb.: Bedeutung von TolX u. Fehlerabschätzun |
|
_Thomas |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 17.08.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.08.2009, 18:44
Titel: Optimization-Toolb.: Bedeutung von TolX u. Fehlerabschätzun
|
|
|
|
|
Guten Tag,
ich habe ein nichtlineares Gleichungssystem mithilfe von fsolve (Optimization Toolbox) gelöst. Die Lösung ist "richtig", also brauchbar, nun möchte ich die Genauigkeit abschätzen. Meine Fragen hierzu:
1. Gibt es ein Tool, mit dem ich die Genauigkeit meiner Lösung abschätzen kann, also der vom Solver gelieferten Lösung? Der Solver löst 6 Parameter.
- a) für den einfacheren Fall, dass die Werte innerhalb meines Gleichungssystems ideal fehlerfrei sind.
- b) für den erschwerten Fall, dass ich auch für die Werte des Gleichungssystems Toleranzen angeben muss.
- c) Ist so etwas wie eine a priori/a posteriori Fehlerabschätzung schon im Tool enthalten?
2. Der Parameter "TolX" aus den fsolve-Optionen: Wenn ich die Beschreibungen richtig verstehe, beschreibt TolX die Differenz im Lösungswert zwischen der aktuellen Lösung und der vorhergehenden. Wird die Differenz unterschritten (nähert man sich also nur noch sehr langsam der Lösung), so wird die Iteration abgebrochen. Ist das so korrekt? Oder beschreibt "TolX" doch so etwas wie die Fehlergrenze bei der gefundenen Lösung?
Wie beschrieben läut das Tool und die Ergebnisse sind brauchbar. Ohne eine Angabe der Genauigkeit ist meine Lösung allerdings (beinahe) wertlos .
Gruß aus Stuttgart,
Thomas
|
|
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.08.2009, 09:00
Titel:
|
|
Hallo,
zu 2.: ist richtig, TolX ist die Toleranz der Schritte, d.h., wenn von Iteration zu Iteration die Größe des Schritts unter TolX fällt, hört der Optimierer auf.
Leider ist das nur ein "Indiz", dass wir auch entsprechend nah an der "richtigen" Lösung sind, ein Beweis oder eine Fehlerschranke ist das leider nicht.
zu 1.: hier bin ich nicht sicher, was die Antwort ist. Eine Möglichkeit, müsste aber nochmal in entsprechender Literatur nachgeschaut werden, ist die Jakobische Matrix, die von fsolve zurückgegeben wird. Dies ist ja sowas wie die Ableitung. Es müsste eigentlich eine Abschätzung der Form
FehlerInY <= FehlerInX * norm(Jacobimatrix)
gelten (mein Numerikkurs ist doch schon zu lange her, als dass ich das mit Sicherheit sagen könnte!).
Dann wäre TolX * norm(jabobian) eine Schätzung (keine Abschätzung!) für den Fehler ...
Titus
|
|
|
_Thomas |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 17.08.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.08.2009, 16:06
Titel:
|
|
Vielen Dank für die Antwort!
Ich hab hier was gefunden:
http://www.f09.fh-koeln.de/imperia/.....altung/matlab_vorl_04.pdf
besagt:
"Mit options(2) kann die Genauigkeit in x und y festgelegt werden, so dass mit
einem Startvektor [2;0] ein Aufruf aus dem Command Window folgendes Ergebnis
zeigt:
"
Ich nehme an, dass vorab mit
"options" als fsolve-Optionen festgelegt wurde.
"options(2)" liefert bei mir allerdings die Nachricht "??? Index exceeds matrix dimensions." (size(options)=1 1). Kann jemand nachvollziehen, was der Code oben bewirken soll? Zweiter Optionen-Eintrag ist "MaxFunEvals".
Darüber hinaus gibt es Angaben zur first order optimality, wobei die Erläuterungen hierzu mein mathematisches Verständnis überfordern...
Eigentlich hätte ich bei der Matlab-Hilfe zu fsolve so einen Punkt wie "Wie genau ist die gelieferte Lösung?" erwartet, aber vielleicht ist das zu banal . Oder die Fehlerabschätzung stellt wirklich ein Problem dar.
Viele Grüße,
Thomas
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.08.2009, 18:04
Titel:
|
|
Hallo,
in der Hilfe zu optimset wird beschrieben, dass die Genauigkeit über TolX (geschätzte Abweichung der Lösung) und TolFun (geschätzte Abweichung des zugehörigen Zielfunktionswerts) gesteuert wird. Ich verstehe offen gesagt nicht, was man sich noch wünschen könnte. Um den Fehler genau berechnen zu können, müsste man die Lösung kennen... und dann kann man sich doch den ganzen Vorgang schenken?
(der Link funktioniert übrigens nicht, und der Code von dort ist IMO Unsinn)
Viele Grüße,
Harald
|
|
|
_Thomas |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 17.08.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.08.2009, 14:30
Titel:
|
|
|
|
|
Hallo Harald,
danke für die Antwort. Die Hilfe besagt:
"TolFun is the termination tolerance placed on the log-likelihood objective function. Successful convergence occurs when the log-likelihood function value changes by less than TolFun.
...
TolX is the termination tolerance placed on the estimated parameter values. Similar to TolFun, successful convergence occurs when the parameter values change by less than TolX."
In meinem Verständnis handelt es sich also um den Betrag der Annäherung an die Lösung; einmal (TolX) der Betrag, um den sich x von der vorherigen Lösung zur aktuellen Lösung verändert hat, einmal (TolFun) den Betrag, um den sich die Zielfunktion bei eingesetzter letzter Lösung dem Ziel (=0) genähert hat, also die Differenz zwischen den Funktionswerten der letzten beiden Lösungen.
Die Abweichung des zugehörigen Zielfunktionswerts muss nicht abgeschätzt werden, der Zielfunktionswert ist null und die Abweichung kann durch Einsetzen der genäherten Lösung bestimmt werden. Der zugehörige Parameter ist fval und eine Output-Größe.
Die Hilfe von Matlab verwirrt mich, an einer Stelle steht:
"Tolx Termination tolerance on x", das finde ich äußerst irreführend .
Viele Grüße,
Thomas
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.08.2009, 17:50
Titel:
|
|
Hallo,
die verwendeten Algorithmen konvergieren in der Nähe eines Minimums sehr schnell, d.h. man kann davon ausgehen, dass die Distanz zum Minimum deutlich geringer (normalerweise um Größenordnungen) ist als die zur vorherigen Iteration.
"Tolx Termination tolerance on x" bedeutet, dass Tolx als Abbruchstoleranz (also die Genauigkeit, die als ausreichend angesehen wird und nach deren Erreichen folglich abgebrochen wird) verwendet wird.
Gibt es noch Fragen?
Grüße,
Harald
|
|
|
_Thomas |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 17.08.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.08.2009, 18:47
Titel:
|
|
Hallo,
die Frage dreht sich um den Satz
"Similar to TolFun, successful convergence occurs when the parameter values change by less than TolX." .
Auf den ersten Blick erscheint es mir auch logisch, dass TolX die Toleranz der Lösung ist (aus einer Fehlerabschätzung, die fsolve durchführt). Es gibt darüber hinaus in der Hilfe keine Aussage zur Lösungsgenauigkeit und der Satz, den du zitiert hast, stützt die Annahme. Allerdings gefällt mir der Satz in der Hilfe nicht, da ich das so wie oben beschrieben verstehe (TolX als Schrittweite), so wie auch Titus es erklärt. Wie sollte denn sonst eine erfolgreiche Konvergenz mit dem selbst wählbaren Wert TolX zusammenhängen? Ich verstehe das wirklich als Schrittweite, auch wenn alle anderen Zeichen deiner Aussage recht geben .
Viele Grüße,
Thomas
|
|
|
martind |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 27.03.09
|
|
|
|
Wohnort: München
|
|
|
|
Version: aktuellste, aber auch ältere
|
|
|
|
|
|
Verfasst am: 04.11.2009, 10:12
Titel:
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|