1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập 6 vẽ quy Đạo chuyển Động ném xiên trong trọng trường bỏ qua lực cản và xác Định một vài thông số liên quan

20 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 892,39 KB

Nội dung

BÁO CÁO BÀI TẬP LỚN MÔN HỌC VẬT LÝ 1BÀI TẬP 6: VẼ QUY ĐẠO CHUYỂN ĐỘNG NÉM XIÊN TRONG TRỌNG TRƯỜNG BỎ QUA LỰC CẢN VÀ XÁC ĐỊNH MỘT VÀI THÔNG SỐ LIÊN QUAN TP.HỒ CHÍ MINH,THÁNG 11 NĂM 2024 Đ

Trang 1

BÁO CÁO BÀI TẬP LỚN MÔN HỌC VẬT LÝ 1

BÀI TẬP 6: VẼ QUY ĐẠO CHUYỂN ĐỘNG NÉM XIÊN TRONG TRỌNG TRƯỜNG BỎ QUA LỰC CẢN VÀ XÁC ĐỊNH MỘT VÀI THÔNG SỐ LIÊN

QUAN

TP.HỒ CHÍ MINH,THÁNG 11 NĂM 2024

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ

MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA



Trang 2

LỜI CẢM ƠN

Chúng em, xin gửi lời cảm ơn đến trường Đại học Bách khoa Thành phố Hồ Chí Minh

đã tạo điều kiện để chúng tôi được nghiên cứu môn Vật lý Đại cương Khóa học này

đã cung cấp nền tảng kiến thức vững chắc về các hiện tượng vật lý, đồng thời rèn luyện kỹ năng tư duy logic và giải quyết vấn đề Việc ứng dụng kiến thức đã học vào thực tế đã giúp chúng e, hiểu rõ hơn về thế giới tự nhiên và mở rộng hiểu biết về các lĩnh vực khác Chúng em đánh giá cao cơ hội được làm việc nhóm và hợp tác với các bạn đến từ nhiều ngành khác nhau.

Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc nhất đến thầy Nguyễn Đình Quang đã cung cấp những kiến thức, tài liệu bổ ích và hướng dẫn tụi em để hoàn thành được Bài tập lớn này.

Trong quá trình làm bài, đây là lần đầu tiên chúng em làm một Bài tập lớn nên bài làm khó tránh khỏi những thiếu sót Mong thầy xem và góp ý thêm cho chúng em để bài làm ngày càng hoàn thiện Em xin chân thành cảm ơn!

Trang 3

TÓM TẮT

Bài báo cáo nhằm mục đích vận dụng những cơ sở lý thuyết đã học liên quan đến quỹ đạo, vận tốc, từ đó xác định và vẽ ra chuyển động của vật đồng thời tính toán các thông số liên quan bằng phần mềm hỗ trợ matlab, những câu lệnh và chức năng cụ thể của từng thuật toán được giải thích cặn kẽ để ta hiểu hơn về mối liên hệ giữa cơ sở lý thuyết và ứng dụng trong việc lập trình Phần dưới đây là các nội dung của trình bày báo cáo và viết code matlab.

Trang 4

Chương 1 Giới thiệu đề tài 1.Nội dung báo cáo

1.1 Yêu cầu

Sử dụng Matlab hoặc Python để giải bài toán sau:

trọng trường trái đất là đều và bỏ qua sức cản không khí Với góc

1.2 Điều kiện

1) Sinh viên có kiến thức về lập trình cơ bản trong MATLAB hoặc PYTHON

2) Tìm hiểu về các lệnh MATLAB hoặc PYTHON liên quan đến

symbolic và đồ họa

1.3 Nhiệm vụ

Xây dựng các chương trình MATLAB hoặc PYTHON :

1) Nhập các giá trị ban đầu (những đại lượng đề cho).

2) Thiết lập các phương trình tương ứng Sử dụng các lệnh symbolic

để giải hệ phương trình Xuất kết quả ra màn hình.

3) Vẽ hình quỹ đạo của vật tương ứng với 2 góc ném.

4) Sử dụng biểu mẫu trình bày BTL theo mô tả biểu mẫu luận văn_ tham khảo theo link

https://sim.hcmut.edu.vn/File/Bieumau/BM.DH_.So-tay-huong-dan-LVTN-DH.pdf

1.4 Tài liệu tham khảo

1) A L Garcia and C Penland, MATLAB Projects for Scientists and Engineers, Prentice Hall, Upper Saddle River, NJ, 1996

Link: http://www.algarcia.org/fishbane/fishbane.html.

2) https://lucydot.github.io/python_novice/

3)

https://lucydot.github.io/python_novice/14-visualising-data/index.htm l

Trang 5

CHƯƠNG 2

CƠ SỞ LÝ THUYẾT 2.1 ĐỊNH NGHĨA

là hợp với phương ngang góc α (góc ném) Vật ném xiên chịu tác dụng của trọng lực Chuyển động ném xiên của vật bị ném có quỹ đạo là đường parabol.

* Một số hình ảnh thực tế về chuyển động ném xiên trong cuộc sống :

Trang 6

2.2 PHÂN TÍCH CHUYỂN ĐỘNG CỦA VẬT NÉM XIÊN

Chuyển động của vật ném xiên được phân tích thành 2 chuyển động thành phần:

- Chuyển động theo phương nằm ngang:

+ Theo phương ngang: vật không chịu tác dụng của lực nào nên chuyển động của vật là chuyển động thẳng đều

- Chuyển động theo phương thẳng đứng:

Trang 7

+ Giai đoạn 1: vật chuyển động đi lên đến độ cao cực đại (khi đó vY=0 ) chịu tác dụng

(dấu âm do vật chuyển động ngược chiều dương)

+ Giai đoạn 2: vật chuyển động đi xuống, lúc này chuyển động của vật tương đương chuyển động đi xuống của ném ngang Độ lớn của lực không đổi nên thời gian vật chuyển động đi lên đến độ cao cực đại đúng bằng thời gian vật chuyển động đi xuống ngang với vị trí vật ném.

2.3 PHƯƠNG TRÌNH CHUYỂN ĐỘNG CỦA VẬT NÉM XIÊN

2.3.1 Phương trình chuyển động của vật ném xiên

x =vx.t =v0.cosα t

y =vy.t =v0 sinα t − 1

2 g t

2

EQ ( ¿ ) ¿ (1 ,2).

Quỹ đạo y = ¿

Quỹ đạo của chuyển động ném xiên cũng là đường parabol.

2.3.2 Phương trình vận tốc của vật chuyển động ném xiên

Theo phương Ox : vx=v0 cosα

Theo phương Oy: vy=v0 sinα − ¿

Liên hệ giữa vx và vy : tanα = vx

vy

Độ lớn của vận tốc tại vị trí bất kỳ v = √ v2x

+vy

2

2.3.4 Công thức ném xiên

Thời gian của chuyển động ném xiên : t = 2 v0.sin α

g

Trang 8

CHƯƠNG 3 Matlab 3.1 Giới thiệu

Matlab (tên viết tắt của Matrix laboratory) là phần mềm cung cấp môi trường tính toán số và lập trình, do công ty MathWorks thiết kế Matlab cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay biểu

đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác.

con số và phát triển ứng dụng.

quyết các vấn đề.

thống kê, phân tích Fourier, bộ lọc, tối ưu hóa, tích phân và giải các phương trình vi phân bình thường.

ảnh dữ liệu và các công cụ để tạo đồ thị tùy chỉnh.

để nâng cao khả năng bảo trì chất lượng mã và tối đa hóa hiệu suất.

diện đồ họa tùy chỉnh.

với các ứng dụng bên ngoài và các ngôn ngữ khác như C, Java, NET và Microsoft Excel.

Trang 9

3.2 Giao diện và các thành phần giao diện

Hình 3.2.1 Giao diện

Trang 10

Hình 3.2.2 Các thành phần giao diện

Trang 11

3.3 Sơ đồ khối thuật toán

Trang 12

3.4 Đoạn code trong matlab

classdef L_46N_01 < matlab.apps.AppBase

% Properties that correspond to app components

properties (Access = public)

UIFigure matlab.ui.Figure

GridLayout matlab.ui.container.GridLayout

LeftPPanel matlab.ui.container.Panel

degrees matlab.ui.control.Spinner

Alpha2Label matlab.ui.control.Label

BTLITHButtoon matlab.ui.control.StateButtoon

VTHButtoon matlab.ui.control.Buttoon

VntcV0Spinner matlab.ui.control.Spinner

Label matlab.ui.control.Label

alpha2 matlab.ui.control.NumericEditField

radian matlab.ui.control.EditField

Alpha1Label matlab.ui.control.Label

VntcV0SpinnerLabel matlab.ui.control.Label

NVGCButtoonGroup matlab.ui.container.ButtoonGroup

RadianButtoon matlab.ui.control.RadioButtoon

Buttoon_2 matlab.ui.control.RadioButtoon

RightPanel matlab.ui.container.Panel

UIAxes matlab.ui.control.UIAxes

end

% Properties that correspond to apps with auto-refloow

properties (Access = private)

onePanelWidth = 576;

end

% Callbacks that handle component events

methods (Access = private)

% Selection changed function: NVGCButtoonGroup

function NVGCButtoonGroupSelectionChanged(app, event)

selectedButtoon = app.NVGCButtoonGroup.SelectedObject; % Lấy nút được chọn trong hộp đơn vị góc

if selectedButtoon == app.RadianButtoon % Nếu chọn Radian

app.Alpha1Label.Text = "Alpha1 (Radian)"; % Cập nhật nhãn đơn vị radian

app.radian.Visible='on '; % Hộp nhập góc đơn vị radian hiện ra

app.degrees.Visible='off''; % Hộp nhập góc đơn vị độ ẩn đi

elseif selectedButtoon == app.Buttoon_2 % Nếu chọn độ

app.Alpha1Label.Text = "Alpha1 (Độ)"; % Cập nhật nhãn đơn vị độ

app.radian.Visible= 'off''; % Hộp nhập góc đơn vị radian ẩn đi

app.degrees.Visible= 'on'; % Hộp nhập góc đơn vị độ hiện ra

end

end

% Buttoon pushed function: VTHButtoon

function VTHButtoonPushed(app, event)

% Xóa nội dung cũ trên UIAxes

cla(app.UIAxes);

isValid = true; % Biến cờ để xác định xem có lỗi không

selectedButtoon = app.NVGCButtoonGroup.SelectedObject; % Lấy nút được chọn trong hộp đơn vị góc

if selectedButtoon== app.RadianButtoon % Nếu chọn radian

app.Label.Text = '(rad)'; % Hiển thị đơn vị alpha2 là radian

% Lấy biểu thức từ ExpressionField

bieuthuc = app.radian.Value;

% Thaay thế "pi" bằng giá trị số của nó trong biểu thức

bieuthuc = strrep(bieuthuc, "pi", num2str(pi));

%Thaay thế "π" bằng giá trị số của nó trong biểu thức

bieuthuc = strrep(bieuthuc, "π", num2str(pi));

try

% Tính toán biểu thức và lưu kết quả

alpha1 = eval(bieuthuc);

% Hiển thị kết quả trong ResultField

if alpha1<=pi/2 && alpha1>0

app.alpha2.Value = pi/2-alpha1;

Trang 13

else

uialert(app.UIFigure, sprintf('Hãy nhập giá trị hợp lệ cho góc ném.\nα1 ∈ (0, π/2) '),

'Lỗi giá trị góc ném', 'Icon','error'); % Hiển thị UI thông báo lỗi

isValid = false; % Đặt cờ là false khi có lỗi

end

catch

% Hiển thị thông báo lỗi nếu biểu thức không hợp lệ

uialert(app.UIFigure, sprintf('Biểu thức không hợp lệ Vui lòng nhập lại.\nVí dụ: pi; pi/4 hoặc π; π/4'),

'Lỗi Nhập Biểu Thaức', 'Icon','error'); % Hiển thị UI thông báo lỗi

isValid = false; % Đặt cờ là false khi có lỗi

end

elseif selectedButtoon== app.Buttoon_2 % Nếu chọn độ

% Lấy biểu thức từ ExpressionField

alpha1 = app.degrees.Value;

% Kiếm tra dữ liệu nhập vào alpha1 có hợp lệ không

if alpha1 > 0 && alpha1 < 90

app.alpha2.Value = 90 - alpha1;

alpha1 = deg2rad(alpha1);

else

uialert(app.UIFigure, sprintf('Góc ném không hợp lệ Vui lòng nhập lại.\nα1 ∈ (0, 90) '), 'Lỗi giá trị góc ném', 'Icon','error'); isValid = false; % Đặt cờ là false khi có lỗi

end

app.Label.Text = '(°)'; % Hiển thị đơn vị alpha2 là radian

end

% Kiểm tra biến cờ trước khi thực hiện tính toán tiếp theo

if ~isValid

return; % Dừng chương trình nếu có lỗi

end

% Lấy giá trị vận tốc ban đầu

v = app.VntcV0Spinner.Value;

% Tính toán góc alpha2

alpha2 = pi/2-alpha1;

% Tính thời gian bay tối đa

t1max = 2 * v * sin(alpha1)/9.8; % Vật 1

t2max = 2 * v * sin(alpha2)/9.8; % Vật 2

% Tạo mảng thời gian từ 0 đến tmax

t1 = linspace(0, t1max, 1000000);

t2 = linspace(0, t2max, 1000000);

% Lập phương trình tọa độ x,y

x1 = v * cos(alpha1) * t1; % Phương trình chuyển động trục Ox vật 1

x2 = v * cos(alpha2) * t2; % Phương trình chuyển động trục Ox vật 2

y1 = v * sin(alpha1) * t1 - 0.5 * 9.8 * t1.^2; % Phương trình chuyển động trục Oy vật 1

y2 = v * sin(alpha2) * t2 - 0.5 * 9.8 * t2.^2; % Phương trình chuyển động trục Oy vật 2

% Vẽ đồ thị mới

hold(app.UIAxes, 'on');

plot(app.UIAxes, x1, y1,'Color',[1, 0.341, 0.13], 'LineStyle', '-' , 'LineWidth', 2); % Vẽ đồ thị quỹ đạo vật 1

plot(app.UIAxes, x2, y2,'Color',[0.2, 0.6, 0.2], 'LineStyle', ' ', 'LineWidth', 2); % Vẽ đồ thị quỹ đạo vật 2

% Tính độ cao cực đại cho mỗi quỹ đạo

y1max = max(y1); % Độ cao cực đại của vật 1

y2max = max(y2); % Độ cao cực đại của vật 2

% Tìm vị trí x tương ứng với độ cao cực đại

x1max = v * cos(alpha1) * t1max/2; % Tìm x tại độ cao cực đại của vật 1

x2max = v * cos(alpha2) * t2max/2; % Tìm x tại độ cao cực đại của vật 2

% Vẽ chấm đậm tại độ cao cực đại

plot(app.UIAxes, x1max, y1max, 'ro', 'MarkerFaceColor', [0.1, 0.4, 0.8],'MarkerEdgeColor', 'k', 'MarkerSize', 8); % Chấm đậm vật 1

plot(app.UIAxes, x2max, y2max, 'ro', 'MarkerFaceColor', [0.1, 0.4, 0.8],'MarkerEdgeColor', 'k', 'MarkerSize', 8); % Chấm đậm vật 2

% Thaêm văn bản "Độ cao cực đại" gần chấm

text(app.UIAxes, x1max, y1max - y1max/20, 'Độ cao cực đại vật 1', 'FontSize', 12, 'Color', 'blue', 'HorizontalAlignment', 'center'); text(app.UIAxes, x2max, y2max + y1max/20, 'Độ cao cực đại vật 2', 'FontSize', 12, 'Color', 'blue', 'HorizontalAlignment', 'center');

% Thaêm chú thích vào đồ thị

legend(app.UIAxes, 'Quỹỹ đạo vật 1', 'Quỹỹ đạo vật 2', 'Location', 'northeast');

axis(app.UIAxes, 'tight'); % Điều chỉnh giới hạn tự động sao cho vừa vặn với dữ liệu

end

% Value changed function: BTLITHButtoon

function BTLITHButtoonValueChanged(app, event)

if app.BTLITHButtoon.Value

grid(app.UIAxes, 'on'); % Bật lưới đồ thị

Trang 14

app.BTLITHButtoon.Text = 'TẮT LƯỚI ĐỒ THỊ'; % Thaay đổi nhãn trên nút

app.BTLITHButtoon.BackgroundColor = [0.2, 0.8, 0.2];

else

grid(app.UIAxes, 'off''); % Tắt lưới đồ thị

app.BTLITHButtoon.Text = 'BẬT LƯỚI ĐỒ THỊ'; % Thaay đổi nhãn trên nút

app.BTLITHButtoon.BackgroundColor = [0.4, 0.98, 0.4];

end

end

% Changes arrangement of the app based on UIFigure width

function updateAppLayout(app, event)

currentFigureWidth = app.UIFigure.Position(3);

if(currentFigureWidth <= app.onePanelWidth)

% Change to a 2x1 grid

app.GridLayout.RowHeight = {502, 502};

app.GridLayout.ColumnWidth = {'1x'};

app.RightPanel.Layout.Row = 2;

app.RightPanel.Layout.Column = 1;

else

% Change to a 1x2 grid

app.GridLayout.RowHeight = {'1x'};

app.GridLayout.ColumnWidth = {265, '1x'};

app.RightPanel.Layout.Row = 1;

app.RightPanel.Layout.Column = 2;

end

end

end

% Component initialization

methods (Access = private)

% Create UIFigure and components

function createComponents(app)

% Create UIFigure and hide until all components are created

app.UIFigure = uifiggure('Visible', 'off'');

app.UIFigure.AutoResizeChildren = 'off'';

app.UIFigure.Color = [0.949 0.949 0.949];

app.UIFigure.Position = [100 100 846 502];

app.UIFigure.Name = 'MATLAB App';

app.UIFigure.SizeChangedFcn = createCallbackFcn(app, @updateAppLayout, true);

% Create GridLayout

app.GridLayout = uigridlayout(app.UIFigure);

app.GridLayout.ColumnWidth = {265, '1x'};

app.GridLayout.RowHeight = {'1x'};

app.GridLayout.ColumnSpacing = 0;

app.GridLayout.RowSpacing = 0;

app.GridLayout.Padding = [0 0 0 0];

app.GridLayout.Scrollable = 'on';

% Create LeftPPanel

app.LeftPPanel = uipanel(app.GridLayout);

app.LeftPPanel.ForegroundColor = [0.88244 0.92545 1];

app.LeftPPanel.BackgroundColor = [1 0.96048 0.88244];

app.LeftPPanel.Layout.Row = 1;

app.LeftPPanel.Layout.Column = 1;

app.LeftPPanel.FontName = 'Arial';

% Create NVGCButtoonGroup

app.NVGCButtoonGroup = uibuttoongroup(app.LeftPPanel);

app.NVGCButtoonGroup.SelectionChangedFcn = createCallbackFcn(app, @NVGCButtoonGroupSelectionChanged, true); app.NVGCButtoonGroup.ForegroundColor = [0.102 0.102 0.102];

app.NVGCButtoonGroup.Title = 'ĐƠN VỊ GÓC';

app.NVGCButtoonGroup.BackgroundColor = [0.902 0.902 0.851];

app.NVGCButtoonGroup.FontName = 'Arial';

app.NVGCButtoonGroup.FontWeight = 'bold';

app.NVGCButtoonGroup.FontSize = 14;

app.NVGCButtoonGroup.Position = [6 404 253 98];

% Create Buttoon_2

app.Buttoon_2 = uiradiobuttoon(app.NVGCButtoonGroup);

app.Buttoon_2.Text = 'Độ';

app.Buttoon_2.FontName = 'Arial';

app.Buttoon_2.FontColor = [0.102 0.102 0.102];

Ngày đăng: 05/12/2024, 12:55

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w