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

Veriablenwerte mit Handle übergeben

 

etc.gamma

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2010, 18:03     Titel: Veriablenwerte mit Handle übergeben
  Antworten mit Zitat      
Ich versuche mit Hilfe der Funktion fsolve ein Gleichungssystem zu lösen. fsolve sollte mir dann ja ein Array x zurückgeben, dass die Lösung des Gleichungssystems enthält. Mein Gleichungssystem ist aber nicht fix. Das heißt die Funktion, die gelöst werden soll benötigt mehr Argumente, die an sie übergeben müssen. Diese ändern sich bei der Anwendung von fsolve nicht, sind aber von Userinputs abhängig. Ich reicht also nicht die Funktion als Funktionshandle zu übergeben, sondern ich muss zusätzlich weitere Parameter übergeben, die dieser Funktion dann zur Verfügung stehen.
Hat jemand eine Idee, wie man das lösen kann? Schon mal vielen Dank im voraus.


Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2010, 09:41     Titel:
  Antworten mit Zitat      
Nach einigem Recherchieren und Ausprobieren habe ich selber ein paar mögliche Lösungen gefunden. Falls jemand genau dieses Problem auch hat und das hier findet gebe ich darum mal kurz selbst die Antwort.

1. Möglichkeit:
Nicht die schönste, aber wohl praktische Möglichkeit. Man verwendet globale Variablen. Ich habe die Variablen, die ich zusätzlich übergeben wollte, die von fsolve aber nicht geändert werden sollten als global (sowohl in der "Basisfunktion", die die fsolve aufruft als auch in der zu lösenden Funktion). Dann kennt die zu lösende Funktion die Variablen auch ohne das sie an sie übergeben wurden. Die zu lösende Funktion erhält als input Argument damit nur noch den Vektor x für den eine Lösung gefunden werden soll.

2. Möglichkeit:
Schöner, aber auch etwas aufwendiger: Man erstellt sich eine eigene Funktion (z.B.: mysolve). Dazu nimmt man einfach fsolve und ändert das so ab, dass man der noch zusätzliche Inputargumente übergeben kann. Und diese übergibt man dann innerhalb von mysolve an die zu lösende Funktion.


3. Möglichkeit:
Man liest die Werte innerhalb der zu lösenden Funktion aus einer externen Datei ein (davon ist aber abzuraten, weil die zu lösende Funktion von fsolve zig mal aufgerufen wird und darum zig mal aus der Datei ausgelesen werden muss. Und das ist einfach langsam.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2010, 11:26     Titel:
  Antworten mit Zitat      
Hallo,

die beste Möglichkeit fehlt eigentlich - die Verwendung eines anonymen Function Handles. Mal eine Art Code- Beispiel:
Code:
p1 = ...;
p2 = ...;
loesung = fsolve(@(x) myfun(x, p1, p2), x0);


Wenn daraus nicht klar wird, wie's gemeint ist, nochmal melden.

Grüße,
Harald
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 - 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.