AMTL - Dvojité kyvadlo (úkol c. 4)
Transkript
AMTL - Dvojité kyvadlo (úkol č. 4) Martin Bodlák 22/05/2011 1 Dvojité kyvadlo Budeme popisovat chaotické chovánı́ dvojitého kyvadla v čase. Vstupnı́ parametry kyvadla popisuje následujı́cı́ obrázek: Našı́m cı́lem bude postupně z těchto hodnot počı́tat změnu polohy dvojitého kyvadla v čase. S rostoucı́m časem se budou měnit pouze parametry ϕ1 a ϕ2 . Pohyb kyvadla budeme tedy popisovat pomocı́ těchto dvou úhlů. 2 Chovánı́ Chovánı́ dvojitého kyvadla v čase můžeme popsat soustavou diferenciálnı́ch rovnic pro známé parametry l1 , l2 , m1 , m2 , ϕ1 , ϕ2 a g: 2 ∆ϕ = ϕ1 − ϕ2 , M = m1m+m , L = ll12 , ω 2 = lg1 2 ϕ001 = 02 ω 2 L(− sin ϕ1 + M cos ∆ϕ sin ϕ2 ) − M L(ϕ02 1 cos ∆ϕ + Lϕ2 ) sin ∆ϕ L − M L cos2 ∆ϕ ϕ002 = 02 ω 2 cos ∆ϕ sin ϕ1 − ω 2 sin ϕ2 + (ϕ02 1 + M Lϕ2 cos ∆ϕ) sin ∆ϕ L − M L cos2 ∆ϕ 1 3 Realizace v MATLABu 3.1 Pomocná funkce drawPendulumInit Tato funkce počı́tá aktuálnı́ polohu obou kyvadel v závislosti na délkách l a úhlech ϕ. function [a b c d] = drawPendulumInit(l,phi) a b c d = = = = 3.2 l(1)*sin(phi(1)); -l(1)*cos(phi(1)); a + l(2)*sin(phi(2)); b - l(2)*cos(phi(2)); Soustava diferenciálnı́ch rovnic function dPhi = PendulumDE(t,Phi) Phi1 = Phi(1); dPhi1 = Phi(2); Phi2 = Phi(3); dPhi2 = Phi(4); l1 = Phi(5); l2 = Phi(6); m1 = Phi(7); m2 = Phi(8); g = Phi(9); dP = Phi1 - Phi2; M = m2/(m1+m2); L = l2/l1; omega = g/l1; denum = L - M*L*(cos(dP))^2; dPhi = zeros(9,1); dPhi(1) = Phi(2); dPhi(3) = Phi(4); dPhi(2) = (omega*L*(-sin(Phi1)+M*cos(dP)*sin(Phi2)) M*L*(dPhi1^2*cos(dP)+L*dPhi2^2)*sin(dP))/denum; dPhi(4) = (omega*cos(dP)*sin(Phi1)-omega*sin(Phi2)+ (dPhi1^2+M*L*dPhi2^2*cos(dP))*sin(dP))/denum; 3.3 Vlastnı́ model function drawPendulum(l,m,phi) clear All; clf; pause on; p = 0.05;% pauza 2 l1 = l(1);% délka kyvadel l2 = l(2); phi1 = phi(1);% počátečnı́ úhly kyvadel phi2 = phi(2); dphi1 = 0;% počátečnı́ posuny dphi2 = 0; m1 = m(1);% hmotnost kyvadel m2 = m(2); g = 9.81;% gravitačnı́ zrychlenı́ param = [phi1; dphi1; phi2; dphi2; l1; l2; m1; m2; g]; sol=ode45(@PendulumDE,[0 100], param); y = sol.y; phi1arr=y(1,:); phi2arr=y(3,:); dtphi1=y(2,:); dtphi2=y(4,:); n = length(phi1arr); %vykreslenı́ range=1.1*(l1+l2); color = ’b’; line1color = ’g’; line2color = ’r’; linesize = 3; size = 10; suspcolor = ’k’; suspsize = 30; [a b c d] = drawPendulumInit(l,phi); move(1,1) = c; move(1,2) = d; figure(1) for i = 1:n phi1 = phi1arr(i); phi2 = phi2arr(i); plot(0,0,’MarkerSize’,suspsize,’Marker’,’.’,’MarkerEdgeColor’,suspcolor); hold on [a b c d] = drawPendulumInit([l1 l2],[phi1 phi2]); plot(a,b,’MarkerSize’,size*m1,’Marker’,’.’,’MarkerEdgeColor’,color); line([0, a],[0, b],’Color’,line1color,’LineWidth’,linesize); 3 plot(c,d,’MarkerSize’,size*m2,’Marker’,’.’,’MarkerEdgeColor’,color); line([a, c],[b, d],’Color’,line2color,’LineWidth’,linesize); axis([-range range -range range]); axis square; move(i,1) = c; move(i,2) = d; hold off pause(p); end figure(2) plot(move(1,1),move(1,2),’MarkerSize’,1,’Marker’,’.’,’MarkerEdgeColor’,’k’); for k=2:length(move(:,1)) plot(move(k,1),move(k,2),’MarkerSize’,1,’Marker’,’.’,’MarkerEdgeColor’,’k’); line([move(k-1,1), move(k,1)],[move(k-1,2), move(k,2)], ’Color’,’k’,’LineWidth’,1); hold on; end axis([-range range -range range]); axis square; hold off; figure(3) FFTPLOT(move(:,1)); figure(4) FFTPLOT(move(:,2)); 3.4 Frekvenčnı́ analýza function FFTPLOT(x) n = length(x); x = x-mean(x); x = fft(x); k = 1:floor(n/2); y = 20*log10(abs(x(2:floor(n/2)+1))); x = log10(2*pi/n*k); plot(x,y,’k-’) axis tight xlabel(’log_{10}{\it\omega}’) ylabel(’P({\it\omega})[dB]’) 3.5 Atraktor function drawPendulumAttr(l,m) l1 = l(1);% délka kyvadel 4 l2 = l(2); dphi1 = 0;% počátečnı́ posuny dphi2 = 0; m1 = m(1);% hmotnost kyvadel m2 = m(2); g = 9.81;% gravitačnı́ zrychlenı́ range=1.1*(l1+l2); for phi1 = 0:0.01*pi:2*pi for phi2 = 0:0.01*pi:2*pi param = [phi1; dphi1; phi2; dphi2; l1; l2; m1; m2; g]; sol=ode45(@PendulumDE,[0 50], param); y = sol.y; phiC=y(1,end); phiD=y(3,end); [a b c d] = drawPendulumInit(l,[phiC phiD]); plot(c,d,’MarkerSize’,5,’Marker’,’.’,’MarkerEdgeColor’,’k’); hold on end end hold off axis([-range range -range range]); axis square; 3.6 Ukázky výstupu Ukázka kyvadla, trasy, po které se pohyboval jeho konec, a frekvenčnı́ analýzy v obou souřadnicı́ch. Budeme uvažovat g = 9.81. l1 = 1, l2 = 1, m1 = 10, m2 = 10, ϕ1 = π, ϕ2 = π2 : 5 l1 = 2, l2 = 1, m1 = 1, m2 = 3, ϕ1 = π, ϕ2 = π2 : l1 = 2, l2 = 3, m1 = 3, m2 = 3, ϕ1 = π, ϕ2 = π2 : 6 l1 = 2, l2 = 3, m1 = 3, m2 = 3, ϕ1 = − π2 , ϕ2 = π2 : 7 Atraktor Atraktor pro l1 = 1, l2 = 1, m1 = 10, m2 = 10: Atraktor pro l1 = 2, l2 = 1, m1 = 1, m2 = 3: 8
Podobné dokumenty
URL
fpůda = 0.01 · (f3 + f3d ) + 0.03 · (f4 + f4d ) + 0.06 · (f5 + f5d ) + 0.1 · (f6 + f6d ) + 0.2 · (f7 + f7d ) + 0.5 · (f8 + f8d ) + 0.1 · (f9 + f9d ). Numerické metody v testovaných softwareových sy...
Víceintegrál po krivce
Příklad. Spočtěte C (z − w)n dz pro n ∈ Z, kde C je kružnice se středem v bodě w. Řešení. Popis kružnice je w + reit, t ∈ [0, 2π], výsledek je 0 pro n 6= −1, 2πi pro n = −1. Příklad. Spočte...
VíceHypertextová podpora výuky v oblasti automatického řízení
tvorbu modelů systémů. Pro obvyklého uživatele však není nutné o implementaci a programování modelů přemýšlet. Základní a již dále nedělitelné jsou pouze bloky obsahující takzvané s-funkce. Jedná s...
Vícerukovet programatora v os unix
protect – určuje práva procesu k mapovanému souboru (paměti). Jsou určena konstantami PROT READ (právo ke čtenı́), PROT WRITE (právo k zápisu) a PROT EXEC (právo ke spuštěnı́) a musı́ b...
Víceoffline v PDF - Mathematical Assistant on Web
Veličina x0 (t) je x-ová komponenta rychlosti (udává jak rychle se měnı́ souřadnice x). Totéž platı́ pro ostatnı́ nezávislé proměnné. Vektor (x0 (t), y 0 (t), z 0 (t)) je vektor rychlos...
Více