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

Nichtlineares Gleichungssystem in mehreren Unbekannten

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2009, 16:12     Titel: Nichtlineares Gleichungssystem in mehreren Unbekannten
  Antworten mit Zitat      
Hallo zusammen,

ich sitze hier an dem Problem, ein Gleichungssystem (14 Unbekannte, 14 Gleichungen) lösen zu wollen.
Das ganze wollte ich - alle Gleichungen 0 gesetzt - in einen Vektor speichern und dann lösen (numerisch natürlich).

Nun habe ich aber schon ein Problem bei Eingabe der ersten Gleichung:

Code:
??? The following error occurred converting from sym to double:
Error using ==> sym.double at 25
DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function
instead.

Error in ==> qso_crp at 10
S(1) = vpa(R0+R1*r+R2*r^2+R3*r^3);


auch ohne vpa geht es auch nicht...
R0..3, r sind mit syms eingebunden.

Ich hoffe, das Forum ist korrekt dafür.
Würde mich freuen, wenn mir jemand helfen kann.

Vielen Dank,
benni


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.09.2009, 16:36     Titel:
  Antworten mit Zitat      
Hallo,

warum verwendest du die Symbolic Math Toolbox, wenn du eine numerische Lösung willst?
Dafür würde sich doch eher fsolve anbieten.

Das VPA-Problem werde ich mir morgen noch ansehen, wenn sich bis dahin keine Lösung gefunden hat.

Viele Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

nun noch zu dem anderen Problem: ich kann das bei mir nicht reproduzieren. Welche MATLAB-Version verwendest du?

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2009, 11:23     Titel:
  Antworten mit Zitat      
danke für die schnelle Antwort.
Tut mir Leid, dass ich nun erst erneut schreiben kann.
Das Problem ist, dass ich nicht weiß, wie ich ohne syms ein Gleichungssystem eingeben soll, sonst meldet Matlab doch undefinierte variable, oder?
Ich benutze Matlab 7.5.0 (R2007b)
Das Problem tritt auch nicht beim Lösen des Systems auf, sondern schon bei der Eingabe.
Hier der Teil des Codes mit dem Fehler:
Code:

format long e
syms r; syms g; syms P;
syms xc; syms xe;
syms R2; syms R3;
syms L0; syms L2;
parameter; % P, R0, R1, L0, L2 auch Parameter

S    = zeros(14,1);
S(1) = R0+R1*r+R2*r^2+R3*r^3;
S(2) = L0+L1*r^2/(L2+L3*r^2);
S(3) = a(1)*q-g(1)*xc-d(1)*xc+d(2)*xe-f;
S(4) = f;
S(5) = diff(f, xc);
S(6) = b(3)*c1/(1+b(3)*c1/k(3))-P;
S(7) = -P*m(4)*m(2)^2/g(3)-a(2)*m(4)*m(2)^2/g(3)-R0;
S(8) = m(4)*m(2)^2-R1;
S(9) = -(m(3)*m(1)^2*b(2)+a(2)*m(3)*m(1)^2*b(2)/k(2)+P*m(3)*m(1)^2*b(2)/k(2))*xc^2/g(3)-R2;
S(10)= m(3)*m(1)^2*b(2)*xc^2/k(2)-R3;
S(11)= a(3)/g(4)-L0;
S(12)= b(1)*m(3)*m(1)^2*xc^2/g(4)-L1;
S(13)= m(4)*m(2)^2-L2;
S(14)= b(1)*m(3)*m(1)^2*xc^2/k(1)-L3;
 


Wäre super, wenn jemand helfen kann,

danke
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.09.2009, 11:54     Titel:
  Antworten mit Zitat      
Das Problem liegt in S = zeros(14,1). Damit ist S vom Datentyp DOUBLE. Dann kann ich nicht in den folgenden Zeilen einzelne Elemente mit symbolischen Ausdrücken belegen.

Schau dir doch mal die Doku zu fsolve an. Da ist es beschrieben, wie man mit Funktionshandles und fsolve nichtlineare Gleichungen lösen kann.

Und: fang vielleicht mal mit 2 Gleichungen mit 2 Unbekannten an, wenn du dir mit der Notation noch schwer tust?

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.09.2009, 22:19     Titel:
  Antworten mit Zitat      
nun habe ich mir die doc zu fsolve angesehen, verstehe aber noch nicht, wie ich die Gleichungen inkl. der Variablen in einen Vektor schreiben kann, um den dann 0 gesetzt lösen zu können...
Oder muss ich das prinzipiell ganz anders angehen?

Grüße,
benni
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.10.2009, 08:54     Titel:
  Antworten mit Zitat      
Üblicherweise legt man eine Funktion an, die diesen Vektor zurückgibt, und verwendet dann ein Function Handle darauf, oder man definiert das direkt als anonymes Function Handle.

Aber schau Dir doch die Beispiele in der Doku zu fsolve an. Das ist wirklich sehr ausführlich, und besser kann ich es offen gesagt auch nicht erklären.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.10.2009, 12:14     Titel:
  Antworten mit Zitat      
super! danke für den Tip mit dem Beispiel, hatte das Doc etwas falsch verstanden und nun ist alles klar geworden.
Falls bei jemand anderem Probleme auftreten sollten - die Beispiele in fsolve doc sollten diese beheben.

Nochmals vielen Dank für die Hilfe
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 14:04     Titel:
  Antworten mit Zitat      
ich stehe gerade vor einem ähnlichen Problem und würde dazu gerne dieses Doc oder Doku? zur fsolve Funktion lesen. Jedoch kann ich es nirgendwo im www finden. Da ich Octave verwende und MatLab nicht besitze kann ich leider nicht direkt in Matlab suchen. Kann mir jemand sagen woher ich diese Doku bekommen kann? Vielen Dank schonmal!
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 14:27     Titel:
  Antworten mit Zitat      
http://www.mathworks.de/help/toolbox/optim/ug/fsolve.html
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.