WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Optimization-Toolb.: Bedeutung von TolX u. Fehlerabschätzun

 

_Thomas
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 17.08.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 17.08.2009, 18:44     Titel: Optimization-Toolb.: Bedeutung von TolX u. Fehlerabschätzun
  Antworten mit Zitat      
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 Wink.

Gruß aus Stuttgart,

Thomas
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 18.08.2009, 09:00     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
_Thomas
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 17.08.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 20.08.2009, 16:06     Titel:
  Antworten mit Zitat      
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:

Code:

>> format long
>> options(2)=1e-12;
>> z = fsolve('NLinGl',[2;0],options)
z =
1.93310212228320
-0.06293799403700
 
"

Ich nehme an, dass vorab mit
Code:


"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 Rolling Eyes . Oder die Fehlerabschätzung stellt wirklich ein Problem dar.

Viele Grüße,
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2009, 18:04     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
_Thomas
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 17.08.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 23.08.2009, 14:30     Titel:
  Antworten mit Zitat      
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 Wink.

Viele Grüße,

Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.08.2009, 17:50     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
_Thomas
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 17.08.09
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 23.08.2009, 18:47     Titel:
  Antworten mit Zitat      
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 Wink.

Viele Grüße,
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
martind
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 27.03.09
Wohnort: München
Version: aktuellste, aber auch ältere
     Beitrag Verfasst am: 04.11.2009, 10:12     Titel:
  Antworten mit Zitat      
Hi,

hier noch eine Solution die beschriebt wie die Toleranzen in der Optimization Toolbox arbeiten:

http://www.mathworks.com/support/so.....n/data/1-17SBI/index.html

Hoffe das hilft zur Klärung,
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.