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

fsolve Ergebnisse als Variable abspeichern

 

help_fsolv

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2013, 14:19     Titel: fsolve Ergebnisse als Variable abspeichern
  Antworten mit Zitat      
Liebe Forengemeinde,

ich löse mit dem Befehl fsolve ein nicht linere Gleichungssystem und erhalte als Ergebnis zwei Werte für x, also x1 und x2 meines Gleichungssystems. Nur leider werden diese Werte nicht als Variable abgespeichert, mit denen ich weiter arbeiten kann. Gibt es einen befehl mit dem ich zum Beispiel x1 und a2 als seperate Variable (Vektor 1x1) abspeichern kann?

Vielen Dank für eure Hilfe Smile


Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 01.04.2013, 14:53     Titel:
  Antworten mit Zitat      
help fsolve ?
und später den Ergebnisvektor auftrennen?
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
help_fsolv

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2013, 14:58     Titel:
  Antworten mit Zitat      
wie trenne ich den Ergebnisvektor denn auf?
Ich kann ihn ja nicht mal "ansteuern", da kommt als Ergebnis nur:

x=
1.5
-2.6

Nach meiner Logik müsste ich dann einen Vektor x haben mit dem ich arbeiten könnte, also zum Beispiel
y=2*x. Aber dann kommt eine Fehler, dass die variable x nicht existiert.
Aus der Hilfe werde ich auch nicht so recht schlau.
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 01.04.2013, 15:04     Titel:
  Antworten mit Zitat      
Wieso hast du x nicht?
x = fsolve( ... )
und dann x(1) und/oder x(2).

Ohne Code ist da Raten angesagt, und glaub mir, dass lieben alle, die hier helfen wollen.
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
help_fsolv

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2013, 17:41     Titel:
  Antworten mit Zitat      
dann mal meinen Code, dachte es gäbe eine allgemeine Lösung für solch ein Problem.

Code:
function eqnsolv (a, b)

x = fsolve(@myf, [0;0;0])
    function y = myf(x)
        c = x(1);
        d = x(2);
        y = zeros(2,1);
        y(1)= c^2-a;
        y(2)= d^3-c+b;
        end
end
 

a, b sind Variablen, welche ich vorher als Zahlenwerte festlege. Ich möchte mir hier eine Funktion schreiben, auf die ich in einem anderen Skript drauf zu greifen kann.
Dann erhalte ich ein Ergebnis in der Form
x=
x(1)
x(2)

Aber x erscheint nicht in meiner Variablenliste, müsste ja eigentlich einen (2,1)-Vektor sein.

Im nächsten schritt würde ich gerne y=x(1) und z=x(2) definieren, um die Lösungen getrennt zu haben, aber dieser Befehl führt zu einem Fehler, da x nicht als Variable erfasst ist.

[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]
 
help_fsolve

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2013, 17:44     Titel:
  Antworten mit Zitat      
ups,, mir ist gerade ein Schreibfehler aufgefallen, eine Null bei den Startwerten zu viel. Also jetzt nochmal den Code:

Code:
function eqnsolv (a, b)

x = fsolve(@myf, [0;0])
    function y = myf(x)
        c = x(1);
        d = x(2);
        y = zeros(2,1);
        y(1)= c^2-a;
        y(2)= d^3-c+b;
        end
end


[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke]
 
Harald
Forum-Meister

Forum-Meister


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

das Problem hat mit fsolve nicht das geringste zu tun. Wenn du in einer Funktion eine Variable berechnest und sie weiterverwenden willst, musst du sie auch zurückgeben.
Funktionsdeklaration:
Code:
function x = eqnsolv (a, b)


Funktionsaufruf:
Code:
erg = eqnsolv(1,2);


Ich würde davon abraten, bei geschachtelten Funktionen in der übergeordneten und in der geschachtelten Funktion dieselbe Variable in unterschiedlicher Bedeutung zu verwenden wie hier x.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 01.04.2013, 19:47     Titel:
  Antworten mit Zitat      
ach so!
dann hatte mein Post nix mit deiner Frage zu tun und hat sicher nur noch mehr verwirrt... Sorry!
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
help_fsolve

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2013, 21:48     Titel:
  Antworten mit Zitat      
also müsste das ganze wie folgt lauten:
Code:

function E = eqnsolv (a, b)

E = fsolve(@myf, [0;0])
function y = myf(x)
c = x(1);
d = x(2);
y = zeros(2,1);
y(1)= c^2-a;
y(2)= d^3-c+b;
end
end
 
 
Harald
Forum-Meister

Forum-Meister


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

sieht gut aus. Klappts auch?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
help_fsolve

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2013, 09:15     Titel:
  Antworten mit Zitat      
Vielen Dank euch allen.
Es funktioniert jetzt einwandfrei und ich bekomme auch den Ergebnisvektor getrennt.
 
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.