Mô tả quỹ đạo viên đạn Viên đạn có khối lượng m Khi ra khỏi nòng súng , viên đạn có vận tốc V ms, ở độ cao h0 Có xét đến lực cản của không khí và ảnh hưởng của gió Nghiên cứu chuyển động của đạn trong không khí xây dựng mô hình mô phỏng quỹ đạo viên đạn trên ứng dụng matlab .
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐHQGHN KHOA CƠ HỌC KĨ THUẬT VÀ TỰ ĐỘNG HÓA BÁO CÁO THỰC HÀNH KĨ THUẬT MÔ HÌNH MÔ PHỎNG NĂM 2015 TÊN ĐỀ TÀI BÀI SỐ : MÔ TẢ QUỸ ĐẠO VIÊN ĐẠN SVTH : Nhóm - K58H Khoa : Cơ học Kỹ Thuật Tự động hóa GVHD : PGS-TS Đinh Văn Mạnh Hà Nội - 2015 Lớp K58H DANH SÁCH SINH VIÊN THAM GIA THỰC HIỆN Tạ Quang Hưng ( Nhóm trưởng ) Nguyễn Trọng Đức Nguyễn Như Đạo Lê Văn Nam Nguyễn Văn Lâm Lê Minh Quý Ngô Văn Cảnh * * * Đánh giá giảng viên : MỤC LỤC Trang Mục Lục A - Giới Thiệu Khát quát chung Đối tượng Mục tiêu nội dung thực hành 4.Phương pháp nghiên cứu B - Nội Dung: Chương I : Mô hình toán chuyển động đạn không khí Thành lập hệ phương trình vi phân chuyển động đạn Phương pháp giải tích Phương pháp Runge – Kutta Chương II : Lập sơ đồ khối , thiết kế giao diện đồ họa chương trình 12 Chương III: Hiển thị kết đồ thị máy tính .14 Chương IV : Code chương trình Matlab 17 C - Kết luận 25 TÀI LIỆU THAM KHẢO A - GIỚI THIỆU MỞ ĐẦU Khái quát chung Tên đề tài : Bài số Mô tả quỹ đạo viên đạn + Viên đạn có khối lượng m (kg) + Khi khỏi nòng súng , viên đạn có vận tốc v (m/s) , độ cao h0 (m) + Có xét đến lực cản không khí ảnh hưởng gió Đối tượng Nghiên cứu chuyển động đạn không khí xây dựng mô hình mô quỹ đạo viên đạn ứng dụng matlab Mục tiêu nội dung thực hành - Hiểu , tính toán xậy dựng mô hình toán Vận dụng phương pháp Runge-Kutta thực hành Matlab Đưa số kết - nhận xét Mục tiêu hoạt động nhóm : Rèn luyện kĩ làm việc nhóm , xậy dựng ý tưởng, đóng góp bổ sung – hoàn thiện , đoàn kết – hoạt động tích cực thành viên - Phương pháp nghiên cứu Kết hợp phương pháp nghiên cứu tính toán lý thuyết với thực nghiệm Xây dựng hệ phương trình vi phân chuyển động ba chiều đạn ,coi đạn vật thể chuyển động không khí, tiến hành giải mô hình toán học theo phương pháp số với thuật toán Rungu – Kutta máy tính cho viên đạn Phân tích so sánh kết tính toán lý thuyết thực nghiệm, rút kết luận khả phù hợp , khả ứng dụng B - NỘI DUNG Chương I MÔ HÌNH TOÁN CHUYỂN ĐỘNG CỦA ĐẠN TRONG KHÔNG KHÍ VÀ LỜI GIẢI Thành lập hệ phương trình vi phân chuyển động đạn không khí Một viên đạn bắn trọng trường với vận tốc đầu vo nghiêng với phương ngang góc Khối lượng viên đạn m , gia tốc trọng trường g , lực cản không khí tác dụng lên viên đạn , k số tỷ lệ biết u vận tốc gió • Phân tích toán Xem viên đạn chất điểm chuyển động tác dụng lực trọng trường lực cản không khí ảnh hưởng gió Hệ tọa độ Đềcác : Hệ tọa độ Oxyz cố định không khí , hệ tọa độ chuẩn để xách định đặc trưng chuyển động đạn Trong : O trùng với tâm miệng lòng pháo, thiết bị phóng thời điểm trước bắn Ox nằm ngang nằm mặt phẳng chứa vecto vận tốc đầu viên đạn trục Oy Oy vuông góc với Ox , hướng lên phía , thuộc mặt phẳng đứng Oz thẳng góc với trục Ox , Oy , tức thẳng góc với vectơ Viết phương trình vi phân chuyển động dạng vectơ : (a) Chiếu đẳng thức vectơ ( a ) lên trục tọa độ ta nhận hệ phương trình vi phân chuyển động : Sau rút gọn ta hệ phương trình : (1) (2) (3) Chọn gốc thời gian lúc viên đạn khỏi nòng súng , ta có điều kiện sau : ;; ;; Phương pháp giải tích Hệ phương trình gồm phương trình độc lập , tích phân riêng phương trình theo điều kiện đầu tương ứng Trước tiên ta tìm nhờ tích phân phương trình (3) pháp hạ cấp phân li ta : Nhờ phương Từ : Khi thay điều kiện đầu : , ta có Do Bây tích phân phương trình vừa nhận với điều kiện đầu : ta có kết : Cũng phương pháp tương tự , tích phân phương trình (1) & (2) với điều kiện đầu : , , ta có kết quả: với điều kiện đầu : , , ta có kết quả: Vậy viên đạn chuyển động mặt phẳng đứng chứa nòng sung theo phương trình : z=0 Phương pháp số trị Trong phần trước ta khảo sát phương pháp giải tích để tìm nghiệm cho toán Cauchy Với phần , ta xét kĩ thuật số trị thông dụng phục vụ cho việc lấy tích phân hệ phương trình vi phân thường qua việc biểu diễn nghiệm dạng bảng giá trị gần hàm nghiệm cần tìm Sau ta dùng kĩ thuật để mô quỹ đạo viên đạn : • PHƯƠNG PHÁP RUNGE-KUTTA ( R-K ) Phương trình vi phân thường : Xét toán Côsi : Để tìm giá trị gần nghiệm y(x) toán , ta chia thành n đoạn nhỏ điểm chia : , i = , ,… , n -1 ; Giả sử biết giá trị gần nghiệm , cần tính giá trị gần nghiệm Muốn ta khai triển Taylor nghiệm y(x) toán : , Trong đẳng thức , cho , ta có : Trong Để tránh tính trực tiếp , ta đặt Trong : Nếu chọn ; ta có : biết ; … ; Đây phương pháp Runge-Kutta có độ xác bậc Nếu bỏ qua số hạng ta nhận công thức Runge-Kutta có độ xác bậc : biết ; … ; Hệ phương trình Bây hệ phương trình ,xát hai phương trình cho đơn giản, ta phát biểu toán Côsi sau : Cho khoảng Tìm hai hàm số xác định , thỏa mãn , , 10 [ B ] Vùng đồ thị quỹ đạo [ C ] Vùng hiển thị thông tin kết tmax : thời gian để đạn chạm đất (s) Hmax : độ cao lớn (m) Lmax : tầm bay xa (m) Chương III HIỂN THỊ KẾT QUẢ BẰNG ĐỒ THỊ MÁY TÍNH [ I ] Nhận xét chung - Quỹ đạo viên đạn mô phương pháp Runge –Kutta có quỹ đạo theo hình parabol Chịu ảnh hưởng thông số liệu đầu vào khác có quỹ đạo khác [ II ] Ảnh hưởng thông số khác điều kiện khác Hình :Ảnh hưởng chia khoảng h ( RK-4) Hình2 : Ảnh hưởng góc bắn anpha Hình : Ảnh hưởng vận tốc gió Hình : Ảnh hưởng lực sức cản không khí (hệ số k ) Hình : Ảnh hưởng độ cao vị trí bắn ( H0) Chương IV CODE CHƯƠNG TRÌNH TRÊN MATLAB [ I ] Chương trình matlab clc clear all % nhap cac dieu kien bai toan m = ; g =9.8; anpha=pi/6; v0=30; u0=2; H = 10; k=0.001; % giai phuong trinh vi phan theo R-K h=0.01; t=0:h:20; x(1)=0; z(1)=v0*cos(anpha); u=@(t,x,z)z; v=@(t,x,z)-g*k*(z-u0); xmax=0; for i=1:(length(t)-1) k1=h*u(t(i),x(i),z(i)); l1=h*v(t(i),x(i),z(i)); k2=h*u(t(i)+0.5*h,x(i)+0.5*k1,z(i)+0.5*l1); l2=h*v(t(i)+0.5*h,x(i)+0.5*k1,z(i)+0.5*l1); k3=h*u(t(i)+0.5*h,x(i)+0.5*k2,z(i)+0.5*l2); l3=h*u(t(i)+0.5*h,x(i)+0.5*k2,z(i)+0.5*l2); k4=h*u(t(i)+h,x(i)+k3,z(i)+l3); l4=h*v(t(i)+h,x(i)+k3,z(i)+l3); x(i+1)=x(i)+1/6*(k1+2*k2+2*k3+k4); z(i+1)=z(i)+1/6*(l1+2*l2+2*l3+l4); i=i+1; end y(1)=0; m(1)=v0*sin(anpha); f=@(t,y,m)m; g=@(t,y,m)-g*k*(1/k+m); ymax=0; chiso=0; for i=1:(length(t)-1) a1=h*f(t(i),y(i),m(i)); b1=h*g(t(i),y(i),m(i)); a2=h*f(t(i)+0.5*h,y(i)+0.5*a1,m(i)+0.5*b1); b2=h*g(t(i)+0.5*h,y(i)+0.5*a1,m(i)+0.5*b1); a3=h*f(t(i)+0.5*h,y(i)+0.5*a2,m(i)+0.5*b2); b3=h*g(t(i)+0.5*h,y(i)+0.5*a2,m(i)+0.5*b2); a4=h*f(t(i)+h,y(i)+a3,m(i)+b3); b4=h*g(t(i)+h,y(i)+a3,m(i)+b3); y(i+1)=y(i)+1/6*(a1+2*a2+2*a3+a4); m(i+1)=m(i)+1/6*(b1+2*b2+2*b3+b4); if ymax =0 xmax=y(i+1)+H; imax=i+1; end i=i+1; end hold on plot(x,y+H,'r','linewidth',1.5); plot(x(chiso),ymax+H,'*g'); plot(x(imax),xmax,'*r'); tmax= t(imax) Hmax=ymax+H Lmax=x(imax) ylim([0 ymax+H+5]); xlim([0 x(imax)+10]); grid on [ II ] Chương trình tạo giao diện đồ họa matlab GUI % gom file : quydaodan.m va file : quydaodan.fig function varargout = quydaodan(varargin) % Begin - Khong sua doan gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @quydaodan_OpeningFcn, 'gui_OutputFcn', @quydaodan_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function quydaodan_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = quydaodan_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; % - Close cua so chuong trinh function dongchuongtrinh_Callback(hObject, eventdata, handles) dong = questdlg(' Ban muon thoat chuong trinh ?', 'Close', 'Yes','No','Yes'); switch dong case 'Yes' close case 'No' end % - Tao luoi function luoi_Callback(hObject, eventdata, handles) % - Run chuong trinh function chayctrinh_Callback(hObject, eventdata, handles) g=9.8; m = get(handles.kluong,'string'); m=str2num(m); H = get(handles.docaobandau,'string'); H=str2num(H); v0 = get(handles.vantocbandau,'string'); v0=str2num(v0); anpha = get(handles.gocban,'string'); anpha =str2num(anpha); u0 = get(handles.vantocgio,'string'); u0 =str2num(u0); sok= get(handles.hesok,'value'); switch sok case k = 0.001; case k = 0.002; case k = 0.003; case k = 0.004; case k = 0.005; end h=0.01; t=0:h:20; x(1)=0; z(1)=v0*cos(anpha); u=@(t,x,z)z; v=@(t,x,z)-g*k*(z-u0); xmax=0; for i=1:(length(t)-1) k1=h*u(t(i),x(i),z(i)); l1=h*v(t(i),x(i),z(i)); k2=h*u(t(i)+0.5*h,x(i)+0.5*k1,z(i)+0.5*l1); l2=h*v(t(i)+0.5*h,x(i)+0.5*k1,z(i)+0.5*l1); k3=h*u(t(i)+0.5*h,x(i)+0.5*k2,z(i)+0.5*l2); l3=h*u(t(i)+0.5*h,x(i)+0.5*k2,z(i)+0.5*l2); k4=h*u(t(i)+h,x(i)+k3,z(i)+l3); l4=h*v(t(i)+h,x(i)+k3,z(i)+l3); x(i+1)=x(i)+1/6*(k1+2*k2+2*k3+k4); z(i+1)=z(i)+1/6*(l1+2*l2+2*l3+l4); i=i+1; end y(1)=0; m(1)=v0*sin(anpha); f=@(t,y,m)m; g=@(t,y,m)-g*k*(1/k+m); ymax=0; chiso=0; for i=1:(length(t)-1) a1=h*f(t(i),y(i),m(i)); b1=h*g(t(i),y(i),m(i)); a2=h*f(t(i)+0.5*h,y(i)+0.5*a1,m(i)+0.5*b1); b2=h*g(t(i)+0.5*h,y(i)+0.5*a1,m(i)+0.5*b1); a3=h*f(t(i)+0.5*h,y(i)+0.5*a2,m(i)+0.5*b2); b3=h*g(t(i)+0.5*h,y(i)+0.5*a2,m(i)+0.5*b2); a4=h*f(t(i)+h,y(i)+a3,m(i)+b3); b4=h*g(t(i)+h,y(i)+a3,m(i)+b3); y(i+1)=y(i)+1/6*(a1+2*a2+2*a3+a4); m(i+1)=m(i)+1/6*(b1+2*b2+2*b3+b4); if ymax =0 xmax=y(i+1)+H; imax=i+1; end i=i+1; end % - Hien thi ket qua - ve thi Hmax=num2str(ymax+H); set(handles.docaolonnhat,'string',Hmax); Lmax=num2str(x(imax)); set(handles.tambayxanhat,'string',Lmax); tmax=t(imax); tmax=num2str(tmax); set(handles.thoigian,'string',tmax); maudo=get(handles.maudo,'value'); mauxanh=get(handles.mauxanh,'value'); maublue=get(handles.maublue,'value'); hold on if maudo==1 plot(x,y+H,'r','linewidth',2); elseif mauxanh==1 plot(x,y+H,'g','linewidth',2); elseif maublue==1 plot(x,y+H,'b','linewidth',2); end plot(x(chiso),ymax+H,'*g'); plot(x(imax),xmax,'*r'); ylim([0 ymax+H+5]); xlim([0 x(imax)+10]); batluoi = get(handles.luoi,'value'); if batluoi==1 grid on else grid off end % - Restart chuong trinh function xoa_Callback(hObject, eventdata, handles) cla; clc; clear all; % -function File_Callback(hObject, eventdata, handles) % -function About_Callback(hObject, eventdata, handles) % -function Thanhvien_Callback(hObject, eventdata, handles) web nhom2.htm % -function Quit_Callback(hObject, eventdata, handles) function kluong_Callback(hObject, eventdata, handles) function kluong_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function docaobandau_Callback(hObject, eventdata, handles) function docaobandau_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function vantocbandau_Callback(hObject, eventdata, handles) function vantocbandau_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function gocban_Callback(hObject, eventdata, handles) function gocban_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit5_Callback(hObject, eventdata, handles) function edit5_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function vantocgio_Callback(hObject, eventdata, handles) function vantocgio_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function docaolonnhat_Callback(hObject, eventdata, handles) function docaolonnhat_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function tambayxanhat_Callback(hObject, eventdata, handles) function tambayxanhat_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function Tailieu_Callback(hObject, eventdata, handles) function hesok_Callback(hObject, eventdata, handles) function hesok_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function thoigian_Callback(hObject, eventdata, handles) function thoigian_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end // Quoc Oai - Ha noi - 2015 C - KẾT LUẬN Quá trình làm việc nhóm hoàn tất bước toán mô cụ thể số mô quỹ đạo viên đạn Đã xây dựng mô hình tính toán hợp lý cho phép khảo sát đầy đủ yếu tố ảnh hưởng tác động gió sức cản không khí Đã xây dựng hệ phương trình vi phân sở mô hình chuyển động tổng quát đạn Xây dựng mô hình , sơ đồ khối giải toán theo phương pháp Runge – Kutta , vận dụng thực hành xây dựng chương trình ứng dụng Matlab.Đặc biệt thiết kế giao diện đồ họa chương trình cho việc tính toán thao tác trở nên trực quan cho người sử dụng Dựa vào kết đồ thị đánh giá sơ lược yếu tố ảnh hưởng ban đầu đến quỹ đạo bay viên đạn Hà Nội – 2015 link download file [...]... trình làm việc nhóm đã hoàn tất các bước trong một bài toán mô phỏng cụ thể là bài số 1 mô phỏng quỹ đạo viên đạn Đã xây dựng mô hình tính toán hợp lý cho phép khảo sát đầy đủ hơn các yếu tố ảnh hưởng dưới tác động của gió và sức cản không khí Đã xây dựng hệ phương trình vi phân trên cơ sở mô hình chuyển động tổng quát của đạn Xây dựng mô hình , sơ đồ khối và giải bài toán theo phương pháp Runge –... không khí đối với viên đạn k Vận tốc khi thoát ra khỏi nòng súng (m/s) Vận tốc gió v0 14 [ B ] Vùng đồ thị quỹ đạo [ C ] Vùng hiển thị thông tin kết quả tmax : thời gian để đạn chạm đất (s) Hmax : độ cao lớn nhất (m) Lmax : tầm bay xa nhất (m) Chương III HIỂN THỊ KẾT QUẢ BẰNG ĐỒ THỊ MÁY TÍNH [ I ] Nhận xét chung - Quỹ đạo viên đạn được mô phỏng bằng phương pháp Runge –Kutta có quỹ đạo theo hình parabol... parabol Chịu ảnh hưởng của các thông số dữ liệu đầu vào khác nhau sẽ có quỹ đạo khác nhau [ II ] Ảnh hưởng của một thông số khác nhau nhưng cùng những điều kiện khác Hình 1 :Ảnh hưởng của chia khoảng h ( RK-4) Hình2 : Ảnh hưởng của góc bắn anpha Hình 3 : Ảnh hưởng của vận tốc gió Hình 4 : Ảnh hưởng lực sức cản không khí (hệ số k ) Hình 5 : Ảnh hưởng của độ cao vị trí bắn ( H0) Chương IV CODE CHƯƠNG TRÌNH... biệt thiết kế giao diện đồ họa chương trình cho việc tính toán thao tác trở nên trực quan cho người sử dụng Dựa vào kết quả bằng đồ thị đã đánh giá sơ lược về các yếu tố ảnh hưởng ban đầu đến quỹ đạo bay viên đạn Hà Nội – 2015 link download file ... trên mục trên , vận dụng thực hành thuật toán Runge – Kutta trên matlab để hệ phương trình Hình 1: Code matlab chứa vòng lặp for giải phương trình (1) theo RK -4 12 Chương II SƠ ĐỒ KHỐI VÀ GIAO DIỆN ĐỒ HỌA CHƯƠNG TRÌNH = = [ I ] – SƠ ĐỒ KHỐI 13 = [ II ] GIAO DIỆN ĐỒ HỌA CHƯƠNG TRÌNH - Lập trình bằng Matlab GUI [B] [A] [C] [ A ] Thông tin dữ liệu nhập vào Khối lượng đạn (kg) Góc bắn anpha (rad) Vị trí