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

Viertelfahrzeugmodell mit Matlab Code entzaubern

 

Vigge
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 06.05.15
Wohnort: Straubing,
Version: ---
     Beitrag Verfasst am: 06.05.2015, 18:27     Titel: Viertelfahrzeugmodell mit Matlab Code entzaubern
  Antworten mit Zitat      
Hallo, habe mich jetzt hier schon einige Tage rumgetrieben. Mein Problem ist, daß ich für meine Diplomarbeit ein Viertelfahrzeugmodell auswerten muß. Ich hatte mich entschlossen dies mit Matlab zu tun, da ich der Überzeugung bin, daß mir Matlab noch öfters über den beruflichen Weg laufen wird, bzw. ich von dem Gesamtpaket überzeugt bin, auch wenn ich kaum eine Ahnung (noch) davon habe. Naja, ich halte zwar ein, zwei Einführungsskripte in meinem Besitz, allerdings sind die Beispiele und Aufgaben nicht viel wert im Vergleich zu meiner Aufgabe, die folgendermaßen lautet: Viertelfahrzeugmodell mit Fremdanregung der Form f=k1*z0*cos(omega*t)+d1*z0*omega*sin(omega*t);
Soweit so gut. Ich habe hier ein ähnliches Beispiel gefunden, mein Code funktioniert sogar im Nachbau, allerdings kann ich mit den Ergebnissen nichts anfangen und bin auch von der Richtigkeit meines DGL-Systems nicht überzeugt. Mir fehlt da einfach der Überblick. Ich habe als Datei mal die Gleichungen angefügt
Code:

%das ist der mich Quälende
function [dz]= bewegdgl(t,z)

m1=15.9;m2=39.6;
k1=51111;k2=23333;
d1=100;d2=944;
z0=0.04;
for om=0.2:0.02:10;
dz=zeros(4,1);
dz(1)=z(2);
dz(2)=(-d2-d1)/m1*z(2)+d2/m1*z(3)-(k2+k1)/m1*z(1)+k1/m1*z0*cos(om*t)+k2/m1*z(2)+d1/m1*z0*om*sin(om*t);
dz(3)=z(4);
dz(4)=d2/m2*z(2)-d2/m2*z(3)+k2/m2*z(1)-k2/m2*z(2);
end
end

Workspace Aufruf:
>> t=[0:0.02:10];
y0=[0 0 0 0];
[tsim,zsim]=ode45(@bewegdgl,t,y0);
>> plot(tsim, zsim);
>> plot(zsim, tsim);
 

Mein Ziel ist es einen Kurvenverlauf zu generieren, der mir die zwei Singularitäten zeigt, d.h. die Eigenfrequenzen gedämpft zeigt.
Ich hätte auch gerne einen Plot der hom+part Lösung, die das Schwingverhalten zeigt. Hrmpf, leider habe ich von Matlab kaum eine Ahnung.
Ich hatte noch ein weiteres Beispiel nachgeschrieben und mal probiert mit Rayleigh- Dämpfung, womit man den Zustandsraum geschickt umschifft, allerdings erhalte ich ein völlig anderes Plotbild, wenn ich dort die Steifigkeiten zu meinen umändere. Ich verstehe das nicht. Jedenfalls sollte der Plot so in etwa aussehen, wie mit diesem Code.
Code:
clc, close all, clear all
k1=24;k2=3;
m1=9;m2=1;
beta=0.07;
k=[[k1+k2, -k2] ; [-k2, k2]];
m=diag([m1,m2]);
c=beta*k;
f=[0;1];
omega=0.2:0.02:10; au=[];
for o=omega
    k_d=-o^2*m+(1+1i*o*beta)*k;
    u=inv(k_d)*f;
    au(end+1)=norm(abs(u));
end
lw=3;fs=22;
plot(omega, au, 'linewidth', lw)


Danke und sry für diese endlosen Zeilen. Ich habe leider nicht wirklich etwas gefunden bisher,was mir hilft.

Hier noch das DGL SYS in der ursprünglichen Form:

(m1 0; 0 m2)*(z1'';z2'')+(d1+d2 -d2; -d2 d2)*(z1';z2')+(k1+k2 -k2; -k2 k2)*(z1;z2)=(f;0)

f war f=k1*z0*cos(omega*t)+d1*z0*omega*sin(omega*t)
_________________

"Onkel Bob? Soso."
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: 06.05.2015, 20:04     Titel:
  Antworten mit Zitat      
Hallo,

auf den ersten Blick würde ich sagen:
Die for-Schleife for om=0.2:0.02:10; ergibt keinen Sinn, da dz in jeder Iteration überschrieben wird. dz hat also am Ende den Wert für om = 10, ohne dass die vorher berechneten Werte berücksichtigt werden.

Wenn das System ursprünglich in Matrix-Vektor-Form gegeben ist, würde ich das so lassen. Ist ja für MATLAB kein Problem :) Allerdings müsste man dazu z(2) und z(3) vertauschen.

Außerdem fällt mir noch auf, dass im Test-Code komplett andere Parameter verwendet werden...

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 06.05.15
Wohnort: Straubing,
Version: ---
     Beitrag Verfasst am: 06.05.2015, 21:02     Titel:
  Antworten mit Zitat      
Mit Testcode meinst du das zweite Prog, nichtwahr?
Ich hatte das nur dazugestellt um zu zeigen, was für einen Plot ich mir von meinem Prog . wünschte. Die dort verwendeten Parameter haben nichts mit meiner Aufgabe zu tun. Das Schlimme ist sogar, verwende ich meine in dieser "Vorlage", erhalte ich einen ganz anderen Graphen als mit den gegebenen Werten. Kann es daran liegen, daß Matlab mir nur einen Ausschnitt vom gesamten Graph plottet?

Zu meinem Prog.:
Ist es überhaupt richtig eine Schleife für das DGL Sys zu verwenden?

Kann ich überhaupt die Matrix Vektorschreibweise verwenden ohne es in einen Zustandsraum zu transformieren oder was meintest du.

Vielen Dank für deine nette und zügige Antwort, btw.
_________________

"Onkel Bob? Soso."
Private Nachricht senden Benutzer-Profile anzeigen
 
Vigge
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 06.05.15
Wohnort: Straubing,
Version: ---
     Beitrag Verfasst am: 06.05.2015, 21:14     Titel:
  Antworten mit Zitat      
Letztere Frage ist natürlich sinnlos, da schon beantwortet.
_________________

"Onkel Bob? Soso."
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: 06.05.2015, 21:38     Titel:
  Antworten mit Zitat      
Hallo,

also:
der erste Code plottet z(t) für ein festes omega.
Der zweite Code plottet au(omega), was auch immer die Bedeutung von au hier sein mag.
Das kann also sicher nicht dasselbe sein.

Wenn du den ersten Code für verschiedene omega laufen lassen willst, dann müsstest du eine for-Schleife um den ode45-Code herum machen und so omega variieren. Dann müsstest du aus z(t) das au extrahieren.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 06.05.15
Wohnort: Straubing,
Version: ---
     Beitrag Verfasst am: 06.05.2015, 22:20     Titel:
  Antworten mit Zitat      
Code:

function [dz]= bewegdgl(t,z)
m1=15.9;m2=39.6;
k1=51111;k2=23333;
d1=100;d2=944;
z0=0.04;
om=0.2:0.02:10;
M=[1 0 0 0;0 1 0 0;0 0 m1 0;0 0 0 m2];
KD=[0 0 -1 0; 0 0 0 -1; k1+k2 -k2 d1+d2 -d2; -k2 k2 -d2 d2];
f=[0;0;k1/m1*z0*cos(om*t)+d1/m1*z0*om*sin(om*t);0];
dz=zeros(4,1);
dz(1)=z(3);
dz(2)=z(4);
for omega=om
dz=-KD/M*z+f;
end
end
 


Komme ich der Sache so näher? Matlab meckert nur noch wegen fehlender Parameter, die ich dann allerdings beim Aufruf im Workspace einfügen würde und irgendwas passt ihm nicht an meinem Vektor f.
Macht das jetzt so Sinn?
Vergiss bitte den zweiten Code, der hatte nicht wirklich was mit dem ersten zu tun, der stammt auch nicht von mir, wie gesagt, nur der Plot vom 2 Code ist eben das, was ich versuche mit meinem Prog zu erreichen.
_________________

"Onkel Bob? Soso."
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 06.05.2015, 22:26     Titel:
  Antworten mit Zitat      
Zitat:
Code:
for omega=om
dz=-KD/M*z+f;
end

das macht keinen sinn da f keine funktion von omega ist oder so. da kommt theoretisch immer das gleiche raus. außerdem gillt da immernoch
harald hat Folgendes geschrieben:
Die for-Schleife for om=0.2:0.02:10; ergibt keinen Sinn, da dz in jeder Iteration überschrieben wird.

Zitat:
Code:
f=[0;0;k1/m1*z0*cos(om*t)+d1/m1*z0*om*sin(om*t);0];

das sollte denke ich zu einem dimensionsproblem führen. guck dir mal den unterscheid zwischen times und mtimes an und vielleicht den bereich annonyme funktionen in der docu.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Vigge
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 06.05.15
Wohnort: Straubing,
Version: ---
     Beitrag Verfasst am: 06.05.2015, 22:34     Titel:
  Antworten mit Zitat      
Vielen Dank!
Super Forum, hätte nicht erwartet, daß man sich meiner so annimmt!
Einen Guten Abend die Herren!
_________________

"Onkel Bob? Soso."
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 06.05.2015, 22:56     Titel:
  Antworten mit Zitat      
kleiner tipp noch für anfänger.
arbeite das grundlagen kapitel der doc durch. das getting startet also.. das erklärt die meisten grundlegenden dinge. grade was das adressieren angeht und so. 50% der fehler hier kann man damit lösen Smile
weiterhin sollte der beitrag aus meiner signatur gelesen werden falls das noch nicht passiert ist Smile das mag auf den ersten blick nach viel aussehen beschleunigt aber meist den erhalt einer sinnvollen antwort Smile
schönen abend noch.
grüße winkow
_________________

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