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

Lösung bei solve-Befehl

 

Theo-Technic
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 05.10.13
Wohnort: Nordhausen
Version: 7.10.0 (R2010a)
     Beitrag Verfasst am: 05.10.2013, 20:35     Titel: Lösung bei solve-Befehl
  Antworten mit Zitat      
Hi!
Am Ende meines Codes möchte ich den Imaginärteil eines Terms = 0 setzen und diesen dann nach "w" auflösen.
"w" soll dann in einem weiteren Schritt in den Realteil (=0) eingesetzt werden um dann nach "c" auflösen zu können...

Mein Probelm (der Fehler) bezieht sich denke ich nur auf die letzte Zeile meines Quellcodes...
Händisch bin nur auf eine (positive) Lösung gekommen, Matlab gibt mir jedoch [0, - Lsg, + Lsg] aus...
Wie kann ich dies umgehen oder verhindern?


Code:
       clc
        clear all
        format compact

syms s

G = 2/(s*(s^2+s+1)*(s+2));
G = expand(G);
s = tf('s');

syms c real
Gw = G/(G*c+1);
Gw = simple(Gw);
[Z,N]=numden(Gw);

syms w real
[Z,N] = numden(G);
Gw = Z*c/((Z*c)+N);
expand(Gw);
[Z,N] = numden(Gw);
N1 = subs(N,'s',(j*w))
Im = imag(N1)
Re = real(N1)

w = solve(Im)



Vielen Dank im Voraus!
_________________

Life is like drawing without a eraser...
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

bei der Berechnung kommt
Im = - 3*w^3 + 2*w = w*(-3*w^2 + 2)
heraus.

Die Nullstellen davon sind definitiv
0
6^(1/2)/3
-6^(1/2)/3

Wenn du händisch bei Im auf etwas anderes kommst:
Stimmt denn Im soweit? Falls nicht, solltest du überprüfen, ab wann die MATLAB-Ergebnisse von deiner Rechnung abweichen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Theo-Technic
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 05.10.13
Wohnort: Nordhausen
Version: 7.10.0 (R2010a)
     Beitrag Verfasst am: 05.10.2013, 21:06     Titel:
  Antworten mit Zitat      
Hi!
Ich habe mein händisches Ergebnis jetzt nocheinmal überprüft...

w²=2/3

der Betrag stimmt, nur hab ich mit dem negativen Vorzeichen des einen Matlab-Ergebnisses so meine Probleme... Embarassed

Nächste Frage wäre dann: Wie setze ich nun dieses eine Positive in meinen Realteil ein und löse nach c auf?

Vielen Dank im Voraus!
_________________

Life is like drawing without a eraser...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
nur hab ich mit dem negativen Vorzeichen des einen Matlab-Ergebnisses so meine Probleme...

Nun, w^2 = 4 hat ja z.B. die Lösungen +2 und -2. Im Grunde ist es hier nichts anderes.
Zitat:

Nächste Frage wäre dann: Wie setze ich nun dieses eine Positive in meinen Realteil ein und löse nach c auf?

Code:
wsol = solve(Im, w)
ReW = subs(Re, w, wsol(wsol>0))
solve(ReW, c)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Theo-Technic
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 05.10.13
Wohnort: Nordhausen
Version: 7.10.0 (R2010a)
     Beitrag Verfasst am: 05.10.2013, 21:58     Titel:
  Antworten mit Zitat      
Hi!

Zitat:
Nun, w^2 = 4 hat ja z.B. die Lösungen +2 und -2. Im Grunde ist es hier nichts anderes.

Danke für die schnelle Erklärung! Rolling Eyes

Jedoch der Quellcode funktioniert nicht.
Es erscheint folgende Fehlermeldung:

??? Error using ==> sym.sym>notimplemented at 2514
Function 'gt' is not implemented for MuPAD symbolic
objects.

Error in ==> sym.sym>sym.gt at 792
notimplemented('gt');

Error in ==> dynSys_1 at 27
ReW = subs(Re, w, wsol(wsol>0))


Vielen Dank im Voraus!
_________________

Life is like drawing without a eraser...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

kann durchaus sein, dass das bei deiner MATLAB-Version noch nicht der Fall ist.

Dann versuch mal:
Code:
wsol = solve(Im, w)
ReW = subs(Re, w, wsol(eval(wsol)>0))
solve(ReW, c)


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.