TRƯỜNG ĐẠI HỌC MỞ HÀ NỘIKHOA ĐIỆN – ĐIỆN TỬ BÀI TẬP LỚN MÔN HỌC: MATLAB & ỨNG DỤNG ĐỀ TÀI: DÙNG MATLAB ĐỂ XÂY DỰNG GIAO DIỆN VÀ GIẢI PHƯƠNG TRÌNH BẬC 2 Giảng viên hướng dẫn: TS.Đỗ Đình H
Trang 1TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA ĐIỆN – ĐIỆN TỬ
BÀI TẬP LỚN MÔN HỌC: MATLAB & ỨNG DỤNG
ĐỀ TÀI: DÙNG MATLAB ĐỂ XÂY DỰNG GIAO DIỆN VÀ GIẢI
PHƯƠNG TRÌNH BẬC 2
Giảng viên hướng dẫn: TS.Đỗ Đình Hưng
Lớp học phần: K25 – ĐT2
Nhóm thực hiện: 3
Hà Nội, Tháng 11 năm 2024
Trang 2Mục Lục
I Khái quát về phần mềm MATLAB 4
1 Công cụ và tính năng chính 4
2 Ưu, nhược điểm của MATLAB 5
II Xây dựng giao diện giải phương trình bậc 2 6
Code view 8
1 số kết quả sau khi khởi chạy chương trình 10
III Kết luận 12
1 Những kinh nghiệm thu được 12
2 Ứng dụng trong tương lai 12
Trang 3Lời nói đầu
Phương trình bậc hai là một công cụ toán học quan trọng, được ứng dụng rộng rãi trong nhiều lĩnh vực của cuộc sống Tuy nhiên, việc giải phương trình bậc hai bằng tay có thể tốn thời gian và dễ mắc lỗi Với sự phát triển của công nghệ thông tin, việc xây dựng các ứng dụng hỗ trợ giải toán đã trở nên phổ biến Nhóm thực hiện đề tài này hướng đến việc xây dựng một giao diện đồ họa người dùng (GUI) bằng MATLAB để giải phương trình bậc hai Mục tiêu cung cấp một công cụ trực quan, dễ sử dụng, giúp người dùng nhanh chóng và chính xác tìm
ra nghiệm của phương trình bậc hai
Giao diện sẽ được thiết kế với các chức năng cơ bản như nhập liệu hệ số của phương trình, tính toán nghiệm, hiển thị kết quả trên giao diện Trong quá trình thực hiện đề tài không tránh khỏi những sai sót, nhóm mong sẽ nhận được sự góp ý
và đánh giá của thầy
Xin chân thành cảm ơn !
3
Trang 4I Khái quát về phần mềm MATLAB
MATLAB (Matrix Laboratory) là một phần mềm mạnh mẽ được phát triển để phục
vụ các nhu cầu tính toán khoa học, kỹ thuật, và mô phỏng Nó có thể xử lý các phép toán ma trận, vẽ đồ thị, phát triển các thuật toán, tạo giao diện người dùng và giao tiếp với các chương trình viết bằng các ngôn ngữ khác như C, C++, Java, và Python MATLAB được sử dụng rộng rãi trong các ngành công nghiệp kỹ thuật, nghiên cứu học thuật và các lĩnh vực như xử lý tín hiệu, mô phỏng hệ thống động lực học, học máy, và nhiều hơn nữa
1 Công cụ và tính năng chính
Tính toán ma trận và đại số tuyến tính: MATLAB được xây dựng để tối
ưu hóa các phép toán ma trận, giúp thực hiện các phép tính đại số tuyến tính một cách hiệu quả
Môi trường phát triển tích hợp (IDE): MATLAB cung cấp một môi
trường phát triển tích hợp mạnh mẽ, với công cụ lập trình và gỡ lỗi, giúp dễ dàng phát triển, chạy và kiểm tra mã
Vẽ đồ thị và trực quan hóa dữ liệu: MATLAB có khả năng trực quan hóa
mạnh mẽ, từ các đồ thị 2D, 3D, đến các biểu đồ phức tạp Điều này giúp người dùng dễ dàng phân tích và diễn giải dữ liệu
Toolboxes: MATLAB hỗ trợ một loạt các "toolbox" – những gói công cụ
chuyên biệt cho các lĩnh vực như xử lý ảnh, tín hiệu, tài chính, học máy, thống kê, và nhiều lĩnh vực khác
Simulink: Đây là một nền tảng mở rộng của MATLAB dùng để mô phỏng
các hệ thống động lực học bằng sơ đồ khối, rất hữu ích trong việc thiết kế hệ thống điều khiển và mô hình hóa các quá trình công nghiệp
Học máy và trí tuệ nhân tạo: MATLAB hỗ trợ các thuật toán và công cụ
học máy, giúp người dùng phát triển và triển khai các mô hình học máy nhanh chóng
Tích hợp với ngôn ngữ lập trình khác: MATLAB có khả năng tương thích
và tích hợp tốt với các ngôn ngữ khác như C/C++, Python, Java và Fortran, giúp mở rộng ứng dụng của nó
Trang 52 Ưu, nhược điểm của MATLAB
a) Ưu điểm
Mạnh về tính toán ma trận:
MATLAB là một trong những phần mềm tốt nhất cho các bài toán liên quan đến ma trận, đại số tuyến tính và các phép tính số phức tạp Các hàm tích hợp sẵn giúp tiết kiệm thời gian và công sức khi thực hiện các phép toán này
Môi trường phát triển mạnh mẽ:
MATLAB cung cấp một môi trường phát triển tích hợp dễ sử dụng, với các công cụ hỗ trợ lập trình, gỡ lỗi và kiểm tra mã Điều này làm cho MATLAB trở thành lựa chọn lý tưởng cho cả người mới học và các nhà phát triển chuyên nghiệp
Khả năng trực quan hóa mạnh:
MATLAB có công cụ vẽ đồ thị và trực quan hóa dữ liệu mạnh mẽ, giúp người dùng dễ dàng tạo ra các biểu đồ và đồ thị phức tạp, từ các biểu đồ 2D, 3D cho đến các hình ảnh động, phù hợp cho phân tích và báo cáo kết quả
Hệ sinh thái phong phú với nhiều công cụ mở rộng (Toolboxes):
Với nhiều "toolbox" chuyên dụng, MATLAB có thể được mở rộng cho các lĩnh vực khác nhau, từ học máy, xử lý tín hiệu, tài chính đến xử lý hình ảnh, sinh học tính toán, và nhiều lĩnh vực khác
Tích hợp tốt với các ngôn ngữ khác:
MATLAB dễ dàng tích hợp với các ngôn ngữ lập trình khác như C, C++, Java, và Python Điều này giúp người dùng tận dụng các thư viện và công cụ
từ các ngôn ngữ khác, mở rộng thêm tính năng cho MATLAB
b) Nhược điểm
Chi phí cao:
MATLAB là phần mềm thương mại và có giá rất cao, đặc biệt đối với các phiên bản dành cho doanh nghiệp và công nghiệp Các toolbox chuyên dụng cũng phải mua riêng, làm tăng chi phí
Khả năng mở rộng hạn chế:
5
Trang 6Mặc dù MATLAB hỗ trợ tích hợp với các ngôn ngữ lập trình khác, nhưng khi cần phát triển các ứng dụng lớn, phức tạp, các ngôn ngữ như Python, C+ + thường có lợi thế hơn do khả năng tối ưu hóa hiệu suất và khả năng mở rộng
Tốc độ chậm đối với các ứng dụng lớn:
MATLAB không được tối ưu hóa cho tốc độ xử lý như các ngôn ngữ cấp thấp như C hoặc C++ Đối với các tính toán lớn hoặc cần hiệu suất cao, MATLAB có thể chạy chậm hơn
Phụ thuộc vào giao diện đồ họa:
MATLAB có giao diện đồ họa mạnh mẽ, nhưng đối với những ứng dụng không cần đến giao diện hoặc khi cần làm việc trên các hệ thống không có GUI (giao diện người dùng đồ họa), MATLAB không phải là lựa chọn tối ưu
Thiếu tính phổ biến trong cộng đồng mã nguồn mở:
So với Python, MATLAB không có cộng đồng mã nguồn mở mạnh mẽ Điều này hạn chế sự phát triển và đóng góp từ cộng đồng lập trình viên, cũng như việc truy cập các thư viện miễn phí
II Xây dựng giao diện giải phương trình bậc 2
Trong MATLAB, có 3 công cụ chính để xây dựng 1 giao diện đó là : +) GUIDE (Graphical User Interface Development Environment)
+) Lập trình thủ công
+) App Designer
- Việc lựa chọn công cụ phù hợp phụ thuộc vào độ phức tạp của giao diện, yêu cầu
về tính tùy biến và kinh nghiệm của người dùng
- Trong đề tài xây dựng một giao diện giải phương trình bậc 2 này, chúng ta sẽ sử dụng công cụ App Designer để hoàn thành chương trình
- Dưới đây là màn hình làm việc của công cụ App Designer :
Trang 7Giao diện của App Designer sẽ gồm 2 thành phần chính:
Component Library: chứa các thành phần giao diện như Button, Label,
Edit Field, Drop-down,
Design View: nơi bạn kéo thả các thành phần để thiết kế giao diện.
Để thêm các thành phần giao diện ta có thể kéo thả các thành phần từ Component Library và Design View
VD: Kéo một Button và Edit Field để tạo một nút và một trường nhập liệu Tùy chỉnh tên và các thuộc tính của thành phần (như Text, Name, Position, ) trong Component Browser hoặc Inspector
Khi một thành phần được chọn (ví dụ: Button), trong tab Code View, bạn có thể nhấp vào Add Callback để thêm hàm xử lý sự kiện
MATLAB sẽ tự động tạo một hàm để bạn viết mã, ví dụ: khi nhấn Button thì lấy
dữ liệu từ Edit Field và thực hiện tính toán
Giao diện của chương trình “Giải phương trình bậc 2” sau khi được thiết kế:
7
Trang 8 Code view:
classdef GPTB2 < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
BitpMatlabPanel matlab.ui.container.Panel
ketquaLabel matlab.ui.control.Label
X2Output matlab.ui.control.Label
X1Output matlab.ui.control.Label
ketluanLabel matlab.ui.control.Label
inputb matlab.ui.control.NumericEditField
inputc matlab.ui.control.NumericEditField
inputa matlab.ui.control.NumericEditField
NhpcLabel matlab.ui.control.Label
X2Label matlab.ui.control.Label
X1Label matlab.ui.control.Label
closeButton matlab.ui.control.Button
clearButton matlab.ui.control.Button
tinhButton matlab.ui.control.Button
NhpbLabel matlab.ui.control.Label
NhpaLabel matlab.ui.control.Label
Giiphngtrnhbc2ax2bxc0Label matlab.ui.control.Label
end
% Callbacks that handle component events
methods (Access = private)
Trang 9function tinhButtonPushed(app, event)
% Lấ3 y giá trị cu 7a a, b, c từ người dùng nhập
a = app.inputa.Value;
b = app.inputb.Value;
c = app.inputc.Value;
% Kiể7 m tra nể3 u a = 0, phương trình trơ 7 thành bậc 1
if a == 0
if b ~= 0
x1 = -c / b;
app.X1Output.Text = num2str(x1);
app.X2Output.Text = '' ;
app.ketquaLabel.Text = 'Phương trình bậc nhấ3 t' ;
else
app.ketquaLabel.Text = 'Không pha 7i là phương trình hợp lệ' ;
app.X1Output.Text = '' ;
app.X2Output.Text = '' ;
end
return ;
end
% Tính delta
delta = b^2 - 4*a*c;
% Kiể7 m tra các trường hợp cu 7a delta
if delta > 0
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
app.X1Output.Text = num2str(x1);
app.X2Output.Text = num2str(x2);
app.ketquaLabel.Text = 'Phương trình có 2 nghiệm phấn biệt' ; elseif delta == 0
x1 = -b / (2*a);
app.X1Output.Text = num2str(x1);
app.X2Output.Text = '' ;
app.ketquaLabel.Text = 'Phương trình có nghiệm kép' ;
else
app.ketquaLabel.Text = 'Phương trình vô nghiệm' ;
app.X1Output.Text = '' ;
app.X2Output.Text = '' ;
end
end
% Button pushed function: clearButton
function clearButtonPushed(app, event)
app.inputa.Value = 0;
app.inputb.Value = 0;
app.inputc.Value = 0;
app.X1Output.Text = '' ;
app.X2Output.Text = '' ;
app.ketquaLabel.Text = '' ;
end
9
Trang 10function closeButtonPushed(app, event)
delete(app.UIFigure);
end
end
% Component initialization
methods (Access = private) ( )
% App creation and deletion
methods (Access = public) ( )
end
1 số kết quả sau khi khởi chạy chương trình:
Trang 12III Kết luận
1 Những kinh nghiệm thu được
- Nắm được kỹ năng lập trình cơ bản của MATLAB như các thao tác với biến và mảng Sử dụng các hàm và làm quen với cấu trúc điều khiển IF – ELSE
- Kỹ năng thiết kế giao diện app
- Tập trung vào trải nghiệm người dùng (giao diện trực quan, tương tác mượt
mà, tính nhất quán, …)
- Tinh thần trách nhiệm với công việc chung, thúc đẩy tư duy sáng tạo, phát triển kỹ năng cá nhân
2 Ứng dụng trong tương lai
-Tích hợp chương trình giải phương trình bậc 2 vào các ứng dụng học toán, giúp người học có thể nhanh chóng giải phương trình và nhận lời giải chi tiết, từ đó hiểu rõ từng bước giải quyết vấn đề
- Có thể thiết kế các sản phẩm đồ họa như logo, poster, giao diện web, ứng dụng,…Tạo ra các trải nghiệm người dùng tuyệt vời cho các sản phẩm kỹ thuật số
- Tham gia phát triển phần mềm, xây dựng các hệ thống thông tin, mạng máy tính
- Hỗ trợ thực hiện các phép tính phức tạp hoặc mô phỏng trong các lĩnh vực như vật lý, sinh học và kỹ thuật
- Làm nền tảng phát triển cho những lĩnh vực như khoa học máy tính, trí tuệ nhân tạo, Interner vạn vật (IoT), …
- Phát triển kỹ năng nghề nghiệp và mở rộng cơ hội việc làm