Video minh hoạ
Code chương trình
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | function Conlacdon clc close all clear all %% CONSTANTS g = 9.81; %% INPUT DATA L= 1; phi = pi/3; dt = 0.01; tmax = 5*2*pi*sqrt(L/g); %% Xu ly t = 0; x = L*sin(phi); y = -L*cos(phi); omega = 0; t_array = t; phi_array = phi/pi*180; omega_array = omega; %% FIGURE fig1 = figure('name','Conlacdon','color','black','numbertitle','off'); set(gcf,'Units','normalized'); set(gcf,'Position',[0 0.1 0.5 0.8]); hold on fig_daytreo = plot([0 x],[0 y],'y','linewidth',2); fig_quanang = plot([x y],'ro','MarkerSize',30,'markerfacecolor','r'); ht = title(sprintf('t = %0.2f s',t)); set(gca,'color','k') axis equal axis(1.3*[-L L -L L]); fig_phi = figure('name','Goc lech','color','white','numbertitle','off'); set(gcf,'Units','normalized'); set(gcf,'Position',[0.5 0.1 0.3 0.38]); graph_phi = plot(t_array,phi_array,'b','linewidth',2); xlabel('t [s]'); ylabel('\phi [degree]'); fig_omega = figure('name','Van toc goc','color','white','numbertitle','off'); set(gcf,'Units','normalized'); set(gcf,'Position',[0.5 0.52 0.3 0.38]); graph_omega = plot(t_array,omega_array,'b','linewidth',2); xlabel('t [s]'); ylabel('\omega [rad/s]'); %% CALCULATION while t<tmax t = t+dt; t_array = [t_array t]; epsilon = -g/L*sin(phi); omega = omega+epsilon*dt; phi = phi+omega*dt+0.5*epsilon*dt*dt; x = L*sin(phi); y = -L*cos(phi); phi_array = [phi_array phi/pi*180]; omega_array = [omega_array omega]; figure(fig1); set(fig_daytreo,'xdata',[0 x],'ydata',[0 y]); set(fig_quanang,'xdata',x,'ydata',y); set(ht,'string',sprintf('t = %0.2f s',t)); figure(fig_phi); set(graph_phi,'xdata',t_array,'ydata',phi_array); figure(fig_omega); set(graph_omega,'xdata',t_array,'ydata',omega_array); pause(0.002); end end |