Verfasst am: 24.06.2013, 10:51
Titel: Re: fminsearch - stoppt bei kleinen Werten
Hallo therion,
Nein, das ist nicht möglich. FMINSEARCHBND benutzt Daten vom Typ DOUBLE. Und diese erlauben nur Berechnungen mit einem relativen Fehler von etwa 16 Stellen, sodass Du mit 5.55e-17 offenbar schon an der theoretischen Grenze der Precision angelangt bist.
Dies ist eine typische Eigenschaft von IEEE754 Floating Point Zahlen und betrifft alle Programme zur numerischen Behandlung.
Du kannst verushen das Problem symbolisch zu lösen, aber das ist dann keine Aufgabe für fminsearchbnd.
Es gibt durchaus Toolboxen für High-Precision-Data, aber ich bezweifele, dass fminsearchbnd aus Anhieb damit läuft. Immerhin sind sehr viele numerische Methoden von den zugrundeliegenden Daten-Typen abhängig, z.B. bei der internen numerischen Differentiation.
Ich bin mir nicht sicher wie ich am besten symbolisch vorgehen sollte,
ich habe K Gleichungen, alle Abhängig von einen PSI. Ich würde gerne das Psi bestimmen. summe(h_m(psi))=M und das für K unterschiedliche Gleichungen.
Wäre für Tipps dankbar.
Fminsearchbnd basiert auf fminsearch (URL:http://www.mathworks.com/matlabcentral/fileexchange/8277-fminsearchbnd-fminsearchcon). Die "h" stellt eine Formel da, die von mehren festen Parametern abhängt(diese unterschieden sich in m und k) sowie den Parameter Psi. Es geht darum das Psi so zuwählen das alle Gleichungen eingehalten werden.
mein Vorschlag wäre dann, in dem entsprechenden File Exchange - Eintrag einen Kommentar zu hinterlassen bzw. den Autor direkt zu kontaktieren. Schließlich wird keiner den Code und wie man damit arbeiten sollte besser kennen als der Autor an sich.
Naja, ich hatte das selbe Problem auch mit fminsearch. Habe gewechselt weil man die Grenzen dort recht bequem einstellen kann.(die Werte stimmen, d.h. die Lösungen bis e-15 sind iO und die Werte werden werden immer kleiner, d.h. es dürfte am typ double liegen und da dürfte der author auch keinen direkten Einfluss drauf haben )
Aber eine symbolische Umsetzung wäre durchaus interessant. Hat jemmand einen Ansatz wie man davor geht? (Weil es einen zuwählenden Parameter für mehre Gleichungen gibt)
da dürfte der author auch keinen direkten Einfluss drauf haben
Ich sehe z.B. eine Möglichkeit: wenn man sich mit einer Komponente sehr nahe an einer Schranke befindet, testen, ob man einen genauso guten oder niedrigeren Zielfunktionswert bekommt, wenn man die Komponente auf die Schranke setzt. Das sollte i.d.R. den gewünschten Effekt erzielen.
Zitat:
Aber eine symbolische Umsetzung wäre durchaus interessant.
Sehe ich offen gesagt nicht so. Da du mit einer Variable viele Gleichungen erfüllen musst (--> Ausgleichsproblem) und ich davon ausgehe, dass die h-Formeln nicht ganz trivial sein werden, halte ich es für sehr unwahrscheinlich, dass eine symbolische Lösung möglich ist.
Um mehr zu sagen, müsste man zumindest beispielhaft die Formel der h's wissen.
Grüße,
Harald
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
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.