CHƯƠNG 1. CÁC HIEN TƯỢNG ROI Trong chương đầu tiên này, chúng ta sẽ khảo sát các chuyển động rơi không cố lực cin không khí và có lực cẩn không khí tỷ lệ với bình phương độ lớn vận tốc của vật Để giải quyết chuyển động có lực cin, những phương pháp số đơn giản nhất để giải phương trình vi phân được đưa vào. Ngoài ra, chương này cũng sẽ giới thiệu những câu lệnh đơn giản, thường gặp của Matlab. Ohitong 1: ©iíe kiệm ligng rơi ° Ung dựng Matlab khảo sát mbt 16 hign lrigng cứ hge A.
SỰ ROLTY DO I. LY THUYẾT Theo định nghĩa, sự rơi của các vật trong chân không chỉ dưới tác dụng của trọng lực gọt là sự rơi tự do. Trong quá trình rơi tự do vật chuyển động nhanh din đều với gia tốc a=g (gia tốc trọng trường). Theo đó vận tốc của vật tại một thời điểm bất kỳ và quãng đường mà vật đi được sau khoảng thời gian t là: v= Vvạ + gl Pe ge? = @ với W là vectơ vận tốc của vật tại thời điểm t= 0.
Hình vẽ trên mính họa cho hai công thức bên dưới. Theo đó 46 thị v(t) là một nhánh của đường thẳng, s(t) là một cung của parabol. Outong 1: Giác kiệm tetgng rot 10 Ung dụng Matlab khio sit một vế kiện tung eđ lige Il. CHƯƠNG TRÌNH TRONG MATLAB Khảo sắt sự rơi tự do rất đơn giản, ở đây chỉ đưa ra chương trình mà không cắn giới thiệu một thuật toán nào cả.
Chương trình này xem như để làm quen với các câu lệnh cơ bản của Matlab. Các giải thuật sẽ được trình bày ở những đoạn sau, khi khảo sắt các hiện tượng rơi khác tổng quát hơn. Chương trình function roitudo; %⁄4Khao sat do thi s(t), v(t) cua mot vat roi tu do cle; %Nhap du lieu ban dau dispDO THI CUA SU ROI TU DO’) vũ=input(Nhap van toc ban dau (m/s):"); g“input(Nhap gia toc trong truong (m/s*2):'); dcltat=input(Khoang thoi gian giua hai lan do (s):"); tmax*input(Thoi gian khao sat ($):"); cle; x0=0;ts0; %Trong khi t<tmax, thuc hien cac phep tinh tim s va v while t©etmax t=t+deltat; if t<“tmax v=v0+g*t; s=v0*t+0.ts) %Ve cac diem (ts); (t,v) tren do thi s0=x; hold on end end -%Gan nhan va ten cho đo thi - title("Noa thd v(t), sít)';{ontname','vni-times','fontsize', 12) xlabel(‘Trulc thôøi gian t(s)','fontname'’,'vni-times','fontsize’,12) YLABEL('Tnuic vaän todc v(m/s) vaø quadng ñöôøng s(m)','fontname'’,. ‘vni-times’,'fontsize’, 12) gtext('v=v(t)') gtext('swa(t)') xả: i Chạy thử chương trình với các giá trị của v0, g, deltat, tmax ta sẽ thu được các đổ thị s(t) và v(t).
Chú ý rằng với khoảng thời gian giữa hai lin khảo sát deltat càng nhỏ thì đổ thị thu được càng chính xác. Với v0=0m/s; g=9,8n/s`; deltat=0,01s; tmax=5; ta có kết quả sau: ung 1: Ode kiện titgng rơi 7 11. MÔ PHONG CHUYỂN ĐỘNG CUA VAT RƠI TỰ DO 1. Phương pháp thứ nhất để tạo ảnh động 1.
Nguyêntắc Tưởng tượng rằng chúng ta có một số bức ảnh, có phong nên giống nhau, và có chứa cùng một vật; i |? ¿| Vị trí của vật không giống nhau trong mỗi bức ảnh. Nếu ta xếp khít Hn lượt các bức ảnh lên nhau một cách nhanh chóng. thì mất sẽ có cảm giác dường như vật đã chuyển động từ vị trí nầy sang vị trí kia, tương ứng với các vị trí của nó trên các bức ảnh. @ Vội dường như di chuyển theo đường chéo của bức ảnh khi 5 bức ảnh trên được chống lên nhau.
Chúng ta sẽ sử dụng nhận xét trên để tiến hành tạo hình ảnh của một vật rơi tự do, cũng như cho tất cả các mô phỏng khác trong các phần sau. Ohitong 1: Cae kiện tigng rot r2 tấn, Matlab khảo sit xổ hignt. Các lệnh sử dụng trong Matlab 1. Lệnh M=moviein(j); Tác đụng: Tạo ra một ma trận cój phần tử, mỗi phần tử xem như một bức ảnh.
Lệnh se((gca, 'nexfplot','replacechildren ') Tác dụng: Thay thế đối tượng trong lin vẽ tiếp theo, nghĩa là thay đổi vị trí của vật. Lệnh Ä#(:, j=getframe; Tác dung: Giữ lai nền đã được chọn, nghĩa là giữ lại “nền” của các bức ảnh. Phương pháp thứ hai để tạo ảnh động 2. Nguyên tắc Ở phương pháp này, chúng ta cũng giữ nguyễn nền của hình ảnh.
Tại thời điểm t, ta vẽ vật; tại thời điểm t+dt tiếp theo ta cũng vẽ vật và đồng thời trong lẳn vẽ này, vật được vẽ ở thời điểm t sẽ bị xóa đi nhờ một câu lệnh. Các lệnh sử dụng trong Matlab 2. Lệnh Aanlde=plot(x,y,’*') ; Lệnh này có tác dụng tạo một Aandle để vẽ vật tại tọa độ x, y. Về sau, để vẽ vật, ta không cắn dùng lệnh plot, chỉ cắn gọi lại handle.
Muốn thay đổi các thông số cần vẽ. ta thay đổi trực tiếp trên handle này. Lệnh sef(handle, 'erasemode ', 'xor ') Lệnh này gửi đến thuộc tính erasemode của handle giá trị là xor. Erasemode là thuộc tính vé chếđộ xóa; xor có ý nghĩa là xóa những hình ảnh trước đó.
Nếu ta thay “sor” bồi "none” thì các hình vẽ trước sẽ không được xóa. Lệnh set(handle, 'xdata’,x,"ydata’,y) Vật chuyển động, nghĩa là các tọa độ x, y sẻ thay đổi theo thời gian. Nên tại mỗi lin vẽ vật, chúng ta thay đổi các thông số xdata, ydata của handle dé thay đổi tương ứng vị trí của vật. Lệnh drawnow Lệnh này có tác dụng thực hiện động tác vẽ.
Nhận xét giữa hai phương pháp tạo ảnh động Với phương pháp thứ nhất, do có sự chdng chập giữa các bức ảnh với nhau, nên hình ảnh thu được sẽ không đẹp. Mà cụ thể là ta sẽ thấy phong nền liên tục “rung”, xuất hiện các sọc ngang chạy dài từ trên cao xuống trong quá trình vật chuyển động. Phương pháp thứ hai khắc phục hoàn toàn nhược điểm này, ta sẽ có hình ảnh vật chuyển động đẹp hơn, hình không còn bị rung. > Cho nên trong những chương trình mô phỏng về sau, phương pháp hai sẽ được vận dụng chủ yếu.
Cũng xin giới thiệu một chương trình đơn giản, được xử lý lin lượt bằng cả hai phương pháp; và ding lin lượt cả hai chế độ xóa xer và none trong phương pháp hai, Chương trình này mô phỏng chuyển động của vật có quỹ đạo hình xoấn ốc (chuyển động của electron trong điện từ trường chẳng hạn). Các chương trình như sau : Cho phương pháp thứ nhất : function xoanocÌ %e Tao hinh anh vat chuyen đong theo duong xoan oc theo phuong pháp | cle; N=1001; Me«movicin(N); =0; %eChon he truc toa do Oxyz axis([-II 11 -S 5-1 35]) %eTao các chuyen dong for j=1:N sel(gca,nextplot’,'replacechildren’) x=10*cos(pi*t); y=5*sin(pi*t); z“3*( plot3(x.g*') %Ve trong khong gian 3 chieu J“J*l; t=t+0.01; M(:,j)*getframe; end Cho phương pháp thứ hai : function xoanoc2 %Tao hinh anh vat chuyen dong theo duong xoan oc theo phuong phap 2 cle; x0=10; y0=0; 200; _% Tao handle de ve vat .01:10 x" 10*cos(pi*t); y=5*sin(pi*t); ze3*t; set(handle,'xdata',x,'ydata',y,'zdata'z) %Gan cac thong so moi cho handle drawnow end Nếu cho chạy hai chương trình này, ta sẽ thấy chương trình thứ hai chạy nhanh hơn rất nhiều. Nếu ta thay chế độ xor bằng none, ta sẽ thu được kết quả hình ảnh vật chuyển động như sau: Ohiteng f: Cade kiệm tung ret 14 lng dụng Matlab kde sát một id hiện tượng eo hee 4. Các bước thực hiện cho bài toán vật rơi tự do 4.
Tính số bức ảnh cần thiết Đối với bài toán này, ta nhận thấy sau một khoảng thời gian rơi vật sẽ chạm đất, do đó số bức ảnh cẩn thiết (từ nay về sau ra sẽ gọi tất là j) có giới hạn và cẩn phải được xác định. Khác với nhiều trường hợp khác, như dao động điều hòa, j có giá trị tùy ý, theo yêu cầu của người khảo sát. Ban đầu vật ở độ cao h, có vận tốc vạ (v,>0 nếu vạ hướng xuống, và ngược lại), Dễ dàng tính được khoảng thời gian cắn thiết để vật chạm đất là: (+ vệ +2gh) ———— = 2 Cứ sau 1 khoảng thời gian Ar thì chúng ta sẽ ghi số liệu một lan, do đó tam T thời giá trịj cẩn thiết là: j =—. Vì j không thể lẻ, nên phải làm tròn bằng cách sử đụng hàm round.
Nếu phẩn lẻ củaj vượt quá hay bằng 0,5 thì round(j)= (phần nguyên của j)+1. Ngược lại nếu phần lẻ củaj nhỏ hơn 0,5 thì round(j)= phần nguyên củaj. Đây là điều cẩn lưu ý nếu muốn tạo ảnh chính xác. hương 1: Cae kiện trgng roi 75 Ta còn có 2 ảnh đặc biệt: một ảnh ghi lại trạng thái ban đầu của vật, day là ảnh tĩnh, vật “bị treo lơ lửng", chỉ khi nào nhấn phím ENTER từ người diéu khiển thi quá trình rơi mới bất đầu.
Ảnh thứ hai cũng là ảnh tĩnh, ghi lại trạng thái của vật khi đã chạm đất. Tóm lại: j =round Lid 2 néu round LG oe a AO) Ai j= mm =) nếu round 5 my AI AI AI 4. Các handle cần thiết Ngoài handle chính dùng để vẽ vật, ta dùng thêm 5 handle phụ là các text. Các text này sẽ ghí lại thời điểm, độ cao, vận tốc của vật.
Chương trình function mophoagrtd %4Mo phong chuyen dong cua mot vat theo phuong thang dung cle %4'Nhap du lieu ban dau h“input(CDo cao ban đau (m):); đeltat=input('Khoang thoi gian gius hai lan khao sat (s):'); vOwinput(Van toc ban dau (m/s);’); g@input('Gia toc trong truong (m/s*2):'); NT aaaananaaananaaann. na ®%4Gan mau cho nen hinh ve (mau vang nhat) set(gef,'color’,[1 1 0.8]) ° T“=(-v0+sart(v0^2+2*°g*h)Vg; %———--—Thoi gian roi vmaxv0+g*T; if v0<0 - H=h+v0^2/2°g), 94———————-Do cao cuc dai else H=h; cnd 94-——————————Tinh so anh can thiết—S———————%% if (T/deltat)>round(T/deltat) _ §o@anh=round(T/deltat}+2; else soanh=round(T/deltat}+l; cnd %4-—-Tlnh truoc s„y, tai cac thoi diem t, cho vao các mang s(j), v()=——% for J=1:soanh ifj==I t()=0; 3(j)=0, v(J)=v0, y()=h, elseif j==soanh t)=T, s(j)eh; v()=vmax; y(j)*0; Ohitomy 1: Ode Áiệm (ugwg re 16 4 Miatlah &káo vit 4 oo else.^2: v(j}“v0+g®1()); y(j)=h-s(J); end Fl 8 ge %eTao he truc toa do thu nhat dung de ve vat trong khi no chuyen dong subplot(‘position’,[0.7}) handle chinh=plot(10,y(j),'0','erase’,'xor’,' markerfacecolor','m’); %handle de ve vat set(gca,'color(0.5 1 1],'fontsize',8)% Mau nen cua he trục toa do (mau xanh nhat) ylabel{'No& cao (m)’, ‘fontsize’,12,'color’,'m','fontname’,'vni-times’ ) axis({0 20 0 H]) %4 Tao he trục toa do thu hai de ve do thi van toc subplot('position’,[0.3]) handle_v~plot(t(j),v(j),’erase’,‘none’); set(gca,'color’,[0.5 1 1],'fontsize',8) xlabel("Théei gian (sỲ, ‘fontsize’,12,’color’,’m’,"fontname’,'vni-times' ) ylabel("Vaiin toác (m/s)', ‘fontsize’,12,'color’,'m’,'fontname',\vni-times' ) axis({0 T 0 vmax]) % Tao he truc toa do thu ba de ve do thi cua quang duong dịch chuyen subplot('position’,[0.3)) handle_x=plot(0,s(j),’erase’,'none',‘color’,’r’); set(gca,color [0. —=====—————-Tao các text thong bao——===========—— -%4Text thoi gian, do lon thoi gian, don vi thoi gian ‘Style’‘text’,/Units',‘normalized’,'Position’,[0,75 0.5 1 1],'foregroundcolor’,’r’,'string’,'t’,'fontsize’, 12); text_dvt=uicontrol(. ‘Style’ ‘text’, "Units', ‘normalized’ Position’ [0,88 0.5 1 1],'foregroundcolor’,’r’,'string’,'s’,'fontsize’,12); text_thoigians=ui Na “Style',text,"Units,'normalizcd''Position,[0.7] 'foregroundcolor','y','string 0); %4Text cho đo cao _text_docao=uicontrol(.
'Style ,texf,Unitx, ‘normalized’, Position’ [0.h); “eText cho van toc text_vantoc=uicontroi(. ‘Style’ ‘text’,/Units', ‘normalized’ 'Position’,[0.'forcgroundcolor''b','string',v0); _®Text cho quang duong dich chuyen Cua ng 1: Ode hign tượng rot text Ont ae text Unis: normalized’ Position: {0,68 0.7],'foregroundcolor’,d’,'string’,0); Mo phong chỉnh————— %4Trong khi j<=soanh while j<=soanh %4Neu j“1, ta cho may 6 trang thai cho ifJ=Il text thonagbao=uicontrol( ‘Style',‘text’,"Units’, ‘normalized. ‘foregroundcolor’,y',String’,/Nhadn ENTER fied baet haau’,.