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 gibt keine Lösung

 

Seife

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2012, 12:53     Titel: fsolve gibt keine Lösung
  Antworten mit Zitat      
Hallo,
ich versuche seit geraumer Zeit ein nicht lineares Gleichungssytem zu lösen, allerdings sagt MATLAB immer nur:
Code:
Optimization terminated: first-order optimality is less than options.TolFun.

ans =

     1     1


Die Ausgabe entspricht dabei immer den Startwerten die ich eingebene. Eine weile googeln hat ergeben, dass ich die Genauigkeit erhöhen soll, das ändert aber leider nichts.
Hat jemand eine idee woran das liegt?

Hier mein Code:
myfun.m
Code:
function F = myfun(C)
    a=1.3617;
    b=0.618;
    fg=2000;
    R1=10000;
    R2=200000;
    F=[a*C(2)-sqrt(a*C(1)^2-4*b*C(1)*C(2))-R1*4*pi*fg*C(1)*C(2);
       a*C(2)+sqrt(a*C(1)^2-4*b*C(1)*C(2))-R2*4*pi*fg*C(1)*C(2) ];
end


Aufruf und ausgabe:
Code:
fsolve(@myfun,[0 0],optimset('TolFun',1e-15))
Optimization terminated: first-order optimality is less than options.TolFun.

ans =

     0     0


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.11.2012, 23:15     Titel:
  Antworten mit Zitat      
Hallo,

[0 0] ist eine Lösung des Gleichungssystems. Es sollte also nicht verwundern, dass fsolve da nicht weiterrechnet.

Bei [1 1] als Startwert läuft MATLAB bei mir in die Lösung [0 0]. Nutzt du vielleicht eine ältere MATLAB-Version?

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2012, 09:54     Titel:
  Antworten mit Zitat      
Ja ich hab version 7.7.0 (R2008b).

Ich hab die Gleichung umgestellt, dass [0 0] keine Lösung mehr ist:
Code:
function F = myfun(C)
    a=1.3617;
    b=0.618;
    fg=2000;
    R1=10000;
    R2=200000;
    F=[(a*C(2)-sqrt(a*C(1)^2-4*b*C(1)*C(2)))/(4*pi*fg*C(1)*C(2))-R1;
       (a*C(2)+sqrt(a*C(1)^2-4*b*C(1)*C(2)))/(4*pi*fg*C(1)*C(2))-R2 ];
end


Jetz kommen nur noch imaginäre Lösungen raus:
Code:
>> fsolve(@myfun,[1e-9 1e-9],optimset('TolFun',1e-15))
Optimizer appears to be converging to a point which is not a root.
 Norm of relative change in X is less than max(options.TolX^2,eps) but
 sum-of-squares of function values is greater than or equal to sqrt(options.TolFun)
 Try again with a new starting guess.

ans =

   1.0e-08 *

  0.100024299608686 + 0.000015699761256i  0.100008113535142 + 0.000018384567463i


Allerdings muss es eine relle Lösung für das Gleichungssystem geben, hat jemand eine idee, wie ich da ran komme?
 
Harald
Forum-Meister

Forum-Meister


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

bei deinem Startwert wird der Term unter der Wurzel negativ, darum die komplexwertige Rückgabe.

FSOLVE sucht nach einer Lösung in der Nähe des Startwertes. Du musst also einen halbwegs vernünftigen Startwert angeben.

Falls das Probleme macht, sollte sich das mit Symbolic Math Toolbox und syms auch analytisch lösen lassen.

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 - 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.