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

DGL System Lösen

 

hegi
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 03.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2011, 12:17     Titel: DGL System Lösen
  Antworten mit Zitat      
Hallo

ich habe folgendes DGL System :


kann mir jemand sagen wie ich das für den ode45 umformen muss ?
für ein gleichung wüsste ich , aber nicht wie ich die beide reinschreiben muss

danke im voraus !

Unbenannt.png
 Beschreibung:

Download
 Dateiname:  Unbenannt.png
 Dateigröße:  2.54 KB
 Heruntergeladen:  2268 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.07.2011, 12:44     Titel: Re: DGL System Lösen
  Antworten mit Zitat      
Hallo hegi,

Zitat:
für ein gleichung wüsste ich , aber nicht wie ich die beide reinschreiben muss

Dann mache das einfach für die erste Gleichung und danch für die zweite Gleichung, und dann schreibe beides untereinander. Du brauchst keine Tricks dazu.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hegi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 03.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2011, 13:13     Titel:
  Antworten mit Zitat      
Vielen dank !

aber wo soll ich die zweite gleichung einfügen, meine function lautet :

Code:
function [zs] = massefeder(x,z);
%System von AWP 2 ordnung
m1=1;
m2=0.7;
c1=1;
c2=2;
c3=3;
k=0.01;


zs= [z(2);...
    z(3);...
    -c1/m1*z(1)+c2/m1*(z2(1)-z(1))-k/m1*(z2(2)-z(2))];
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 11.07.2011, 14:22     Titel:
  Antworten mit Zitat      
Hallo hegi

du musst im Prinzip ein Zustandsraummodell aufstellen.
Das heisst du musst deine beiden Gleichungen auf ein Gleichungssystem 1. Ordnung bringen.

Dann musst die dieses nur noch eintragen und lösen:
Code:

function [dx] = odetest(t,x);
%System von AWP 2 ordnung
m1=1;
m2=0.7;
c1=1;
c2=2;
c3=3;
k=0.01;


dx = zeros(4,1);
dx(1) = x(2);
dx(2) = -k/m1*(x(4)-x(2))+c2/m1*(x(3)-x(1))-c1/m1*x(1);
dx(3) = x(4);
dx(4) = k/m2*(x(4)-x(2))-c2/m2*(x(3)-x(1))-c3/m2*x(3);
end
 

und hier der Aufruf:
Code:

t = [0 10];            % Simulationsdauer
 y0 = [5 0 0 0];     % Anfangsbedingungen [x1 x1p x2 x2p]
[tsim,xsim] = ode45(@odetest,t,y0);
 

xsim ist jetzt ein Spaltenvektor mit den Spalten [x1 x1p x2 x2p]
Ergebnisse können jetzt über der Zeit (tsim) geplottet werden.

Angaben ohne Gewähr^^
Private Nachricht senden Benutzer-Profile anzeigen
 
hegi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 03.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2011, 15:18     Titel:
  Antworten mit Zitat      
Hey
Sehr geil danke,danke Smile
Funktioniert Super !!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du hast ja Vektoren mit Positionen und Geschwindigkeiten. Die musst du dann nur wieder in die (aufgelösten) DGLen einsetzen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 11.07.2011, 15:37     Titel:
  Antworten mit Zitat      
Soviel ich weiss geht das mit dem ode-Solver nicht.
Du könntest aber mir dem Befehl diff die Geschwindigkeit nochmals ableiten.

Code:

a = diff(v);
plot(t(1:length(a)),a);
 

Jedoch hast du hier einen Wert weniger da diff immer die Differenz zwischen 2 Benachbarten Werten ausrechnet.

Alternativ könntest du gesammte Berechnung in Simulink durch ein Zustandsraummodell durchführen..
Da sollte es eigentlich kein Problem sein an den Kanal von xpp ein Scope zu hängen.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Anmerkungen zum vorherigen Kommentar:
diff berechnet nur den Unterschied zwischen aufeinanderfolgenden Werten. Näherungen für die Beschleunigungen sähen so aus:
Code:


Aber: warum der Aufwand, wenn man nur die Lösung nochmal in die aufgelöste DGL einsetzen muss und die Beschleunigungen quasi geschenkt bekommt?

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 03.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2011, 16:13     Titel:
  Antworten mit Zitat      
ja genau das ist mir kurz nach der posten eingefallen das ich es einfach in die dgl einsetzen muss Wink
daher hab ichs wieder editiert aber ihr wart wohl schneller Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 11.07.2011, 17:01     Titel:
  Antworten mit Zitat      
@ Harald: stimmt, mann muss natürlich noch durch die Zeitabstände teilen, aber in der schnele... Wink

Zum Thema in die DGl einsetzen: Manchmal sieht man den Wald vor Bäumen nicht^^
Private Nachricht senden Benutzer-Profile anzeigen
 
Becks_jn
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 02.09.11
Wohnort: ---
Version: R2018
     Beitrag Verfasst am: 19.01.2013, 14:59     Titel:
  Antworten mit Zitat      
Hallo Matlab-User Smile

Ich habe ein ähnliches Problem, deswegen Poste ich Meins mal auch hier, mit der Hoffnung, dass ihr mir helfen könnt....

Ich habe jetzt ein normales Lineares Gleichungssystem in Matrixschreibweise..
Also: Matrix * Vektor = Lösungsvektor

Das erste Element meines Vektors ist aber sozusagen eine zweite Ableitung (xpp).

Kann ich dieses System auch in den Zustandsraum überführen? Wenn ja, was mache ich mit den anderen Gleichungen, die von xpp nicht abhängig sind?

Ich könnte das System auch von Hand so umstellen, das am Ende nur noch die Gleichung übrig bleibt, die mich interessiert..Aber das ist ja ein bisschen aufwendig und deswegen wollte ich Matlab das für mich machen lassen.

Hier Poste ich mal meine Matrix und die Vektoren

Code:

Matrix=[M          0     0        0   -1   -1   0     0   0    0;
            0          -1    (l-b)    -b  -h   -h   0     0   0    0;
            0          0     1        1   0    0    0     0   0    0;
          m1         0     0        0   0    1    0     0   0    -1;
          heta1/r   0     0        0   0    0    0     0   0    r;
            0          0     0        -1  0    0    0     1   0    0;
          m2         0     0        0   -1   0    0     0   -1   0;
        Theta2/r   -1    0        0   0    0    0     0   r    0;
           0          0     -1       0   0    0    1     0   0    0;
        0          0     0        0   0    0    -mu   0   1    0];  
   
Vektor=[xpp Man Bv   Av Bh Ah   N2 N1 H2   H1]';

Loesung=[0   0   M*g  0  0  m1*g 0  0  m2*g 0]';
 


Ich hoffe ihr könnt mir helfen.
Lg
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.