|
|
Variable aus impliziten Funktionen bestimmen |
|
ITSE |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 16.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.06.2011, 14:44
Titel: Variable aus impliziten Funktionen bestimmen
|
 |
HI
ich habe ein Problem mit der Berechnung einer Variablen aus impliziten Funktionen.
Meine zu berechnende Variable ist v, da sie in einigen Funktionen vorkommt habe ich sie zunächst mit syms = v definiert. Über v weiß ich das es zwischen (0,1] liegen muss.
Die Funktionen aus denen v nun bestimmt werden soll sind:
|hs'*x| = 1 oder |hs'*x|-1=0 und
g = 0 = max(es,er)*xRx - 1
In der g = 0 Gleichung habe ich das Problem das max nicht für sym Varaiblen funktioniert, was ja auch logisch ist.
Nun scheint es mir aber rechnerisch nicht sinnvoll irgendwelche Schleifen laufen zu lassen bis beide Gleichungen erfüllt sind. Der solve Befehl funktioniert aufgrund von sym auch nicht.
Hat jemand eine Idee oder einen Tip?
Danke euch Thomas
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.06.2011, 16:51
Titel:
|
 |
Hallo,
was spricht dagegen, das ganze numerisch anzugehen und mit FSOLVE zu lösen?
Grüße,
Harald
|
|
|
ITSE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 16.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 11:03
Titel:
|
 |
HI,
danke dir für den Vorschlag, nur habe ich auch mit fsolve das Problem das er die max Operation nicht auf sym Variablen anwenden kann.
Habe es mal nur mit der einen Funktion versucht und da bekomme ich nen Fehler
??? Error using ==> lsqfcnchk at 111
If FUN is a MATLAB object, it must have an feval method.
Gruß Thomas
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 11:45
Titel:
|
 |
Hallo ITSE,
"hsx-1" ist keine (anonyme) Funktion und kann deshalb nicht mit FEVAL berechnet werden. Schaue Dir nochmal die Beispiele in "doc fsolve" an.
Gruß, Jan
|
|
|
ITSE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 16.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 11:57
Titel:
|
 |
Hi
habe nun ein neues .m-File erstellt für die zwei Funktionen er berechnet mir nun auch ein Ergebnis das nahe Null aber nicht bei Null liegt.
Diese Funktion rufe ich zum Optiomieren auf:
Gruß Thomas
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 12:30
Titel:
|
 |
Hallo,
wäre gut, wenn du auch noch den Aufruf mit reinstellst.
Ansonsten: du kannst die Genauigkeit über Optionen wie TolX oder TolFun einstellen.
Grüße,
Harald
|
|
|
ITSE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 16.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 12:45
Titel:
|
 |
HI
also mein Aufruf ist im Endeffekt folgender:
Gruß Thomas
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 13:18
Titel:
|
 |
Hallo,
ohne deine Initialisierungsdateien werde ich das Programm nicht laufenlassen und damit die Problematik nicht nachvollziehen können.
Wie groß ist fval denn? Wenn es z.B. 1e-3 oder 1e-6 ist, dann hilft eine Anpassung der Optionen, siehe Beitrag von 12:30.
Grüße,
Harald
|
|
|
ITSE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 16.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 13:25
Titel:
|
 |
Hi
Ach ja sorry die habe ich ja nie gepostet. Ich hänge die Dateien mal an.
Die Datei zum ausführen heißt Regelgesetz.
GRuß Thomas
EDIT: Habe gerade gesehen das die YY falsch war. Habe sie neu hoch geladen.
Mein Problem ist das v = 0 gesetzt wird. jedoch soll v größer als Null sein, aber maximal 1 werden.
Beschreibung: |
|
 Download |
Dateiname: |
YY.m |
Dateigröße: |
622 Bytes |
Heruntergeladen: |
304 mal |
Beschreibung: |
|
 Download |
Dateiname: |
Regelgesetz.m |
Dateigröße: |
360 Bytes |
Heruntergeladen: |
291 mal |
Beschreibung: |
|
 Download |
Dateiname: |
Optimierungsergebnis.m |
Dateigröße: |
597 Bytes |
Heruntergeladen: |
314 mal |
Beschreibung: |
|
 Download |
Dateiname: |
init.m |
Dateigröße: |
992 Bytes |
Heruntergeladen: |
282 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 17:18
Titel:
|
 |
Hallo,
ich habe das eben mit MATLAB 2011a laufen lassen und bekomme bei Ausführung von Regelgesetz.m:
v =
0.8032
fval =
3.0763e-011
Falls du andere Ergebnisse bekommst: mit welcher MATLAB-Version arbeitest du?
Grüße,
Harald
|
|
|
ITSE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 16.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2011, 17:20
Titel:
|
 |
HI
ja ich bekomme andere ERgebnisse. Habe die 2009b Version zur Verfügung.
Gruß Thomas
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.06.2011, 09:18
Titel:
|
 |
Hallo,
ich habe es nun auch mal auf 2009b ausprobiert und reproduzieren können. Dir fällt sicher auch auf, dass da im Command Window sehr viele NaN angezeigt werden. Das legt die Vermutung nahe, dass irgendein Problem aufgetreten ist.
Zur Analyse des Problems kann oft das dritte Rückgabeargument (exitflag) hilfreich sein.
Im vorliegenden Fall ist das einfachste, mit einem anderen Startwert, z.B. 0.5 zu beginnen.
Grüße,
Harald
|
|
|
ITSE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 16.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.06.2011, 09:30
Titel:
|
 |
HI
also als exitflag erhalte ich 0 (= Too many function evaluations or iterations.). Wenn ich mit 0.5 starte bekomme ich den exitflagwert 1 (=FSOLVE converged to a root).
Habe nun zwei Fragen:
a) Wie kommst du auf die 0.5? Ist das Erfahrungssache, oder nimmt man bei solchen Numerischen Verfahren immer idealerweise den Mittelwert als Startwert?
b)Wie kann ich sicherstellen das v die 0 nie erreicht? Weil dann bekomme ich ja wieder Probleme. (Davon ausgehend das sich x laufend ändert und nur zum Test als fixer Vektor angenommen wurde).
GRuß Thomas
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.06.2011, 10:29
Titel:
|
 |
Hallo,
a) ich habe einfach das erstbeste genommen, was mir eingefallen ist.
Wenn du weißt, dass die Lösung zwischen 0 und 1 liegen soll, ist das naheliegend.
b) Mit fsolve im Grunde gar nicht. Wenn es Nebenbedingungen gibt, kann man f(v) = y das umschreiben in min(abs(f(v) - y)) und es mit fminbnd oder fmincon angehen.
Grüße,
Harald
|
|
|
ITSE |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 16.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.06.2011, 10:32
Titel:
|
 |
Hi Harald,
dann bedanke ich mich recht herzlich bei dir. Hast mir sehr geholfen.
Werde mir einfach den v-Wert plotten lassen, dann sehe ich den Verlauf ja und kann ihn bei Bedarf mit den von dir vorgeschlagenen Ideen begrenzen.
Gruß Thomas
|
|
|
|
|
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 - 2025
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.
|
|