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

Differenzialgleichung 2. Grades korrekt lösen

 

bastibe2689
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 14:48     Titel: Differenzialgleichung 2. Grades korrekt lösen
  Antworten mit Zitat      
Hallo Leute,
ich hab ein Problem, und zwar möchte ich mit dem folgenden Quellcode, eine DGL lösen. Dies funktioniert auch wunderbar. Das Problem ist, dass es auf einem meiner Rechner geht, auf einem zweiten aber nicht.
Nun würde ich gerne wissen was ich am 2. Rechner ändern muss, dass es auch dort korrekt ausgegeben wird.
Dieser Quellcode greift auf bestehende Variablen zu, diese wurden natürlich zuvor implementiert.

Quellcode:
Code:

lsg=dsolve('Dy1=-2*y1-y2','Dy2=4*y1-y2','y1(0)=1','y2(0)=1','x')
pretty(lsg.y1)
pretty(lsg.y2)
syms x
y1=subs(lsg.y1,x,t);
y2=subs(lsg.y2,x,t);
subplot(211)
plot(t,y(:,1),'r-',t,y(:,2),'b-')
xlabel('Zeit/s')
subplot(212)
plot(t,y1,'r-',t,y2,'b-')
xlabel('Zeit/s')

Ausgabe:
lsg =
    y2: [1x1 sym]
    y1: [1x1 sym]

     /   3 x     1/2         \          1/2
  exp| - --- - 15    x 1/2 I | (- 9 + 15    I)
     \    2                  /
- -------------------------------------------- +
                       16

      /   3 x     1/2         \        1/2
   exp| - --- + 15    x 1/2 I | (9 + 15    I)
      \    2                  /
   ------------------------------------------ +
                       16

     1/2    /   3 x     1/2         \          1/2
   15    exp| - --- - 15    x 1/2 I | (- 9 + 15    I) 1/240 I +
            \    2                  /

     1/2    /   3 x     1/2         \        1/2
   15    exp| - --- + 15    x 1/2 I | (9 + 15    I) 1/240 I
            \    2                  /

    1/2    /   3 x     1/2         \          1/2
- 15    exp| - --- - 15    x 1/2 I | (- 9 + 15    I) 1/30 I -
           \    2                  /

     1/2    /   3 x     1/2         \        1/2
   15    exp| - --- + 15    x 1/2 I | (9 + 15    I) 1/30 I
            \    2                  /
Warning: Imaginary parts of complex X and/or Y arguments ignored
> In DGL5_3 at 12
Warning: Imaginary parts of complex X and/or Y arguments ignored
> In DGL5_3 at 12
 


Wäre sehr schön wenn mir jemand sagen kann was da nicht passt!!
Mit freundlichen Grüßen
BastiBe

Edit by _Peter_: Bitte Coeumgebung verwenden.Danke.
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: 11.05.2011, 14:56     Titel:
  Antworten mit Zitat      
Hallo,

ich fürchte, du musst zur Lösung deiner Frage schon etwas mehr beitragen:
- Welches Release verwendest du auf welchem Rechner?
- Unterscheiden sich die Betriebssysteme?
- Ist die hier gezeigte Lösung die richtige oder die falsche? Worin unterscheiden sie sich? Kann es sein, dass beiden Lösungen richtig sind und sie nur unterschiedlich ausgedrückt sind?

Wenn du 2008b oder ein neueres Release verwendest, empfehle ich die Verwendung von MuPAD
Code:

Da ist die Darstellung der Formeln doch deutlich angenehmer als im MATLAB Command Window.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 15:02     Titel:
  Antworten mit Zitat      
Okay, entschuldigung Smile
Ich verwende MatlabR2008a,
Betriebssysteme sind identisch Windows Viesta,
die aufgezeigte Ausgabe ist die flasche.
Die korrekte sieht so aus:
Code:

lsg =
    y1: [1x1 sym]
    y2: [1x1 sym]
 
                                                              1/2      1/2               1/2
     - 1/8 exp(- 3/2 x) (1/5 sin(1/2 15    x) 15    +  cos(1/2 15    x))
 
                                                          1/2      1/2                 1/2
         exp(- 3/2 x) (3/5 sin(1/2 15    x) 15    + cos(1/2 15    x))
 


Glaube nicht das die Ausgaben identisch sind oder?!
MfG

PS.:Was ist den MuPad? wie verwende ich das? Smile
Edit by _Peter_: Bitte Coeumgebung verwenden.Danke.
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: 11.05.2011, 15:11     Titel:
  Antworten mit Zitat      
Hallo,

nur zur Sicherheit: du verwendest auf beiden Rechnern 2008a?

Um zu sehen, ob die Ausgaben identisch sind, könntest du die einen in ein MAT-File speichern, das auf dem anderen Rechner laden, voneinander abziehen und dann vereinfachen.

MuPAD ist eine Oberfläche ähnlich zu dem, was man von Mathematica oder Maple kennt. Aufruf, indem du in der Kommandozeile mupad eingibst. Gibt es allerdings wie gesagt erst seit 2008b.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 15:19     Titel:
  Antworten mit Zitat      
Oh mein Fehler,
ich verwende auf beiden Rechnern MatlabR2008b! Smile

Ändert das die Situation?
MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
bastibe2689
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 15:23     Titel:
  Antworten mit Zitat      
Wenn ich"mupad" eingebe öffnet sich ein Fenster, aber wie schaffe ich es nun das mein Ergebnis "korrekt" erscheint?
MfG
BastiBe
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: 11.05.2011, 15:30     Titel:
  Antworten mit Zitat      
Hallo,

das macht einen sehr starken Unterschied, weil sich die hinter der Symbolic Math Toolbox steckende Engine in 2008b von Maple auf das besagte MuPAD geändert hat.

Ich kann das Problem leider auch nicht direkt lösen. Wenn sich jemand anders dieser Frage annimmt, wird folgendes helfen:
Gibt es irgendwelche Unterschiede zwischen den Rechnern und ihren Konfigurationen? [Die Antwort dürfte "ja" sein, sonst würden wohl keine unterschiedlichen Ergebnisse geliefert.]

Damit das Ergebnis überhaupt erscheint, musst du dein Problem in MuPAD eingeben - siehe dazu auch die Hilfe (innerhalb von MuPAD) von ode und solve.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 15:37     Titel:
  Antworten mit Zitat      
Okay, danke mal bis dahin! Smile

Jetzt Problem 2, wie arbeite ich denn mit Mupad? Smile
ne einfache Gleichung konnte ich lösen aber mit dsolve gehts schon nicht mehr?!
mh.....
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: 11.05.2011, 15:47     Titel:
  Antworten mit Zitat      
Hallo,

wie an sich schon gesagt: Hilfe aufmachen und nach ode::solve suchen, und sich dann an den Beispielen orientieren.
MuPAD und MATLAB sind historisch zwei verschiedene Produkte, verwenden also unterschiedliche Syntax und Befehle.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Kai Gehrs
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 12.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 15:51     Titel:
  Antworten mit Zitat      
Hi,

generell gilt: Zwischen 2008a und 2008b gibt es definitiv Unterschiede in den Rückgaben der Symbolic Math Toolbox.

Wenn ich das Differenzialgleichungssytem in 2008b löse, bekomme ich eine Lösung in komplexen Exponentialfunktionen. Das ist dann etwas ungünstig, wenn man versucht, die Lösungen als reelle Funktionen (was sie de facto sind) graphisch darzustellen. In einem der späteren Releases sind die Algorithmen der Symbolic Toolbox weiter verbessert worden, so dass dort automatisch reelle Lösungen in Termen von e-Funktionen mit Sinus und Cosinus geliefert werden.

In 2008b kann man aber leicht mit einem 'simplify' die Lösungen des Differenzialgleichungssytems vereinfachen und damit in eine Darstellung überführen, die die komplexe Einheit 'I' nicht mehr enthält.

Folgendes sollte helfen:
Code:

>> S = dsolve('Dy1=-2*y1-y2','Dy2=4*y1-y2','y1(0)=1','y2(0)=1','x');
>> S.y1
 
ans =
 
(exp((15^(1/2)*i*x)/2 - (3*x)/2)*(15^(1/2)*i + 9))/16 - (15^(1/2)*i - 9)/(16*exp((3*x)/2 + (15^(1/2)*i*x)/2)) + (15^(1/2)*i*(15^(1/2)*i - 9))/(240*exp((3*x)/2 + (15^(1/2)*i*x)/2)) + (15^(1/2)*i*exp((15^(1/2)*i*x)/2 - (3*x)/2)*(15^(1/2)*i + 9))/240
 
>> simplify(S.y1)
 
ans =
 
(5*cos((15^(1/2)*x)/2) - 15^(1/2)*sin((15^(1/2)*x)/2))/(5*exp((3*x)/2))
 
>> simplify(S.y2)
 
ans =
 
(10*cos((15^(1/2)*x)/2) + 6*15^(1/2)*sin((15^(1/2)*x)/2))/(10*exp((3*x)/2))


In MuPAD direkt kann man das System natürlich auch lösen. Dort ist die Syntax etwas anders. Das Beispiel übersetzt dorthin wie folgt:

>> sys:= {diff(y1(x),x) = -2*y1(x)-y2(x), diff(y2(x),x) = 4*y1(x)-y2(x)}:
>> inits:= {y1(0)=1,y2(0)=1}:
>> S:= solve(ode(sys union inits, {y1(x),y2(x)}))
 


Ich hoffe, das hilft ein bißchen.

Viele Grüße,
-- Kai Gehrs
Edit by _Peter_: Bitte Coeumgebung verwenden.Danke.
Private Nachricht senden Benutzer-Profile anzeigen
 
bastibe2689
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 11.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 15:56     Titel:
  Antworten mit Zitat      
Hat super geholfen, danke danke dank! Smile
Liebe Grüße
BastiBe
Private Nachricht senden Benutzer-Profile anzeigen
 
Kai Gehrs
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 12.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 16:00     Titel:
  Antworten mit Zitat      
Gern geschehen!

Wie sagt Anne Will doch immer so schön: viel Spaß beim vermehren der gewonnenen Einsichten Very Happy
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.