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

Suche dringend Hilfe / Nachhilfe Raum Köln

 

kathi_00
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 20.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2010, 17:48     Titel: Suche dringend Hilfe / Nachhilfe Raum Köln
  Antworten mit Zitat      
hallo zusammen,

ich bin Matlab-Neuling und suche Hilfe. ich Muss ein programm schreiben, welches mir die Schwingung einer Glocke simuliert, genauer gesagt, es soll mir den Anschlagzeitpunkt betimmen.
Ich habe im Internet mehrere Ansätze für das darstellen eines Doppelpendels gefunden... Habe versucht mit Hilfe der Event/ereignis Funktion mir den Anschlagpunkt ausgeben zu lassen, leider klappt es nicht vielleicht kann mir einer von euch helfen???

Der letzte teil : function h = h_glockenwand(t,h,phi1,phi2,psi) funktioniert irgendwie nicht, ich weiß aber nicht wo der Fehler ist...

Viellciht bietet ja einer Nachhilfe, so dass er mir bei meinem Programm helfen kann... Ich suche jemnaden im Raum Köln Universität

Danke!

Code:

function DoppelPendelAnimation_Anschlag(phi1Anf , phi2Anf) % Die Funktion "DoppelPendelAnimation" kann aufgerufen werden mit Angabe der Anfangsauslenkungen % der beiden Massen oder ohne Parameter.
% Im letztgenannten Fall werden Default-Werte (das sind die Werte der Aufgabenstellung) verwendet.

if nargin == 2 % Start mit vorgegebenen Anfangswerten?
x0 = [phi1Anf ; phi2Anf ; 0 ; 0] ; % Anfangswerte [phi1 ; phi2 ; omega1 ; omega2]
else
x0 = [pi/9 ; pi/6 ; 0 ; 0] ; % Default-Anfangswerte
end

% Parameter (global definiert, damit Wertaenderung nur an einer Stelle erforderlich):
global mdm J1 J2 s1 s2 gdl psi

mdm = 270/160 ; J1 = 1./12 ; J2 = 1./12 ; s1 = .5 ; s2 = .5 ; l1 = 1 ; l2 = 1 ; gdl = 9.81/l1 ; psi=pi/2

tspan = [0 10] ; % Zeitintervall

% Integration des Anfangswertproblems:
% Mit der Option "Mass" wird angekündigt, dass eine Massenmatrix zu % berücksichtigen ist, der folgende Parameter gibt den Namen der dafür bereitgestellten Funktion an.
% Die Option "MaxStep" ist zwingend, um über ein Zeitintervall von 10 Sekunden ausreichend genaue Ergebnisse zu erzielen % Mit den beiden Keywords "OutputFcn" und "OutputSel" wird veranlasst, dass % schon während der Berechnung die Funktion ?2(t) in das Graphik-Fenster gezeichnet wird

Clf
options = odeset('Mass' , @Massenmatrix , 'MaxStep' , 0.001 , ...
'OutputFcn' , @odeplot , 'OutputSel' , [1 2]) ;

% ... zeichnet die Funktion phi2(t) waehrend der ode45-Berechnung in das Graphik-Fenster
[t x] = ode45 (@RechteSeite , tspan , x0 , options) ;


% Animation der Bewegung, zunaechst "Sortieren der Ergebnisse":
phi1i = x(:,1) ; % x ist die Matrix der Ergebnisse,
phi2i = x(:,2) ;; % phi1i und phi2i sind Vektoren

clf
tt = tspan(1) ;
xx = [0 l1*sin(phi1i(1)) l1*sin(phi1i(1))+l2*sin(phi2i(1))] ; yy = [0 -l1*cos(phi1i(1)) -l1*cos(phi1i(1))-l2*cos(phi2i(1))] ; plot ([0 l1/8 -l1/8 0],[0 l1/6 l1/6 0] , 'r-') ; hold on p=plot (xx,yy,'o-','EraseMode','xor') ; axis (1.1*[-(l1+l2) (l1+l2) -(l1+l2) (l1+l2)]) ; zeit = title (sprintf('t = %8.2f s' , tt)) ; set (gca , 'userdata' , zeit)

deltatt = 1/25 ; % 25 Bilder pro Sekunde
zeitlupe = 1 ; % Verzögerungsfaktor
cstart = cputime ;
Zeitschritte = length (t)

for ii=1:Zeitschritte % Schleife über alle berechneten Zeitschritte
if (t(ii) >= tt) % Ausgabe jeweils nur nach deltatt
xx = [0 l1*sin(phi1i(ii)) l1*sin(phi1i(ii))+l2*sin(phi2i(ii))] ;
yy = [0 -l1*cos(phi1i(ii)) -l1*cos(phi1i(ii))-l2*cos(phi2i(ii))] ;
set(p , 'XData' , xx , 'YData' , yy)
while (cputime-cstart < tt*zeitlupe) % warteschleife
end
zeit = get (gca , 'userdata');
set(zeit , 'string' , sprintf('t = %8.2f s' , tt))
drawnow
tt = tt + deltatt ;
end
end

% ============================================================
% Funktion, die die "Massenmatrix" des Dgl.-Systems definiert:
function M = Massenmatrix (t , xv)

global mdm J1 J2 s1 s2 gdl

phi1 = xv(1) ;
phi2 = xv(2) ;
omega1 = xv(3) ;
omega2 = xv(4) ;

c = cos(phi1-phi2);
M = [ 1 0 0 0 ;
0 1 0 0 ;
0 0 s1^2+J1+mdm mdm*s2*c ;
0 0 mdm*s2*c mdm*s2^2+J2 ] ;



% ============================================================
% Funktion, die die "rechte Seite" des Dgl.-Systems definiert:
function xvp = RechteSeite (t , xv)

global mdm J1 J2 s1 s2 gdl

phi1 = xv(1) ;
phi2 = xv(2) ;
omega1 = xv(3) ;
omega2 = xv(4) ;

s = sin(phi1-phi2);

phi1p = omega1 ;
phi2p = omega2 ;
omega1p = -mdm*s2*omega2^2*s - (s1+mdm)*gdl*sin(phi1) ;
omega2p = mdm*s2*omega1^2*s - mdm*s2*gdl*sin(phi2) ;

xvp = [phi1p ; phi2p ; omega1p ; omega2p] ;

function h = h_glockenwand(t,h,phi1,phi2,psi)

global psi

h= [h(2); psi/2-(phi1-phi2)];

global psi

function [value, isterminal, direction]=ereignis(t,h,phi1,phi2,psi)
value=h(1);
isterminal= 1
direction= -1

phi=pi/9, phi= pi/6, psi=pi/2;

h0=[1;-1];
tend=20;
tspan=[0 tend];
options=odeset('Events', @ereignis);
t[];
h[];

while 1
[tout hout];
n=length(tout);
t=[t;hout];
h0=[0; -hout(n,2)];
tstart=tout(n);
tspan=[tstart tend];
if tstart>=tend
break
end
end

phi=(h:1);
phipunkt=h(:,2);
subplot(211);
plot(t,phi,t,phipunkt);
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.