LỜI CẢM ƠN Để hoàn thành bài tiểu luận này, em xin gửi lời cảm ơn chân thành đến: Ban giám hiệu trường Đại Học Tôn Đức Thắng Thành phố Hồ Chí Minh vì đã đưa môn Đại số tuyến tính cho Cô
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN XUÂN BẰNG - 52300177
TIỂU LUẬN GIỮA KỲ
ĐẠI SỐ TUYẾN TÍNH CHO CÔNG NGHỆ THÔNG TIN
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2024
Trang 2TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN XUÂN BẰNG - 52300177
TIỂU LUẬN GIỮA KỲ
ĐẠI SỐ TUYẾN TÍNH CHO CÔNG NGHỆ THÔNG TIN
Người hướng dẫn
Ths.Phan Hoàng Phúc Vinh
Trang 3THÀNH PHỐ HỒ CHÍ MINH, NĂM 2024
Trang 4LỜI CẢM ƠN
Để hoàn thành bài tiểu luận này, em xin gửi lời cảm ơn chân thành đến:
Ban giám hiệu trường Đại Học Tôn Đức Thắng Thành phố Hồ Chí Minh vì đã đưa môn Đại số tuyến tính cho Công nghệ thông tin vào chương trình giảng dạy cùng với đó là tạo điều kiện cho sinh viên về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài liệu, thuận lợi cho việc tìm tòi, học hỏi và rút ra những kiến thức cần thiết và hữu ích
Đặc biệt, em xin cảm ơn giảng viên bộ môn – Thầy Phan Hoàng Phúc Vinh đã giảng dạy tận tình chi tiết truyền đạt những kiến thức quý báu cho em trong suốt thời gian học tập vừa qua Nhờ có những kiến thức mà thầy giảng dạy, em đã có thểbồi bổ, nắm vững và hiểu bài hơn bao giờ hết Đây chắc chắn sẽ là những kiến thức quý báu, là hành trang để em có thể vững bước sau này Bộ môn Đại số tuyến tính cho Công nghệ thông tin là môn học thú vị, vô cùng bổ ích và có tính tư duy cao Đảm bảo cung cấp đủ kiến thức, đồng thời còn giúp sinh viên luôn có thể tư duy và
tự tìm tòi những phương hướng để ra được kết quả Do chưa có nhiều kinh nghiệm làm đề tài luận cũng như những hạn chế về kiến thức, trong bài tiểu luận chắc chắn
sẽ không tránh khỏi những thiếu sót Rất mong nhận được sự nhận xét, ý kiến đóng góp từ phía Thầy để bài tiểu luận được hoàn thiện hơn Lời cuối cùng, em xin kính chúc Thầy nhiều sức khỏe, thành công trên con đường giảng dạy và hạnh phúc trong cuộc sống
TP Hồ Chí Minh, ngày 30 tháng 4 năm 2024
Tác giả
BằngNguyễn Xuân Bằng
Trang 5CÔNG TRÌNH ĐƯỢC HOÀN THÀNH
TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự hướng dẫn khoa học của ThS.Phan Hoàng Phúc Vinh Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Ngoài ra, trong Tiểu luận còn sử dụng một số nhận xét, đánh giá cũngnhư số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chúthích nguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung Tiểu luận của mình Trường Đại học Tôn Đức Thắng không
liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trìnhthực hiện (nếu có)
TP Hồ Chí Minh, ngày 30 tháng 4 năm 2024
Tác giả
BằngNguyễn Xuân Bằng
Trang 6TÓM TẮT
Thực hiện làm 8 câu bài tập về ma trận, từ 3 ma trận tạo random ma trận A loại (10 x10) random số thuộc [1 ; 100], ma trận B loại (2 x 10) random số thuộc [1 ; 20], matrận C loại (10 x 2) random số thuộc [1 ; 20]:
12)3
+…+(A
17)8+(A
10)9+(A
19)10, và in ra mànhình
Câu C: Lưu các hàng lẻ của ma trận A vào một ma trận mới và in ma trận kếtquả thành màn hình
Câu D: Lưu các số nguyên lẻ trong ma trận A vào một vectơ mới và in vectorkết quả vào màn hình
Câu E : Lưu các số nguyên tố trong ma trận A vào một vectơ mới và in kết quảvector vào màn hình
Câu F : Cho một ma trận D = C x B , các phần tử đảo ngược trong các hàng lẻcủa ma trận D và In ma trận kết quả lên màn hình
Câu G: Tìm các hàng có số nguyên tố tối đa trong ma trận A và in các hàng lênmàn hình
hình
Trang 7DANH MỤC HÌNH VẼ
Hình 1.Bài code
Hình 2.Bai code
Hình 3.Ma trận A, B, C
Hình 4.Đáp án câu A
Hình 5.Đáp án câu B
Hình 6.Đáp án câu C
Hình 7.Đáp án câu D 10
Hình 8.Đáp án câu E 11
Hình 9 Đáp án câu F 11
Hình 10 Đáp án câu G 12
Hình 11 Đáp câu H 13
Trang 8MỤC LỤC
TÓM TẮT…… … iii
DANH MỤC HÌNH VẼ
MỤC LỤC…
CHƯƠNG 1 PHƯƠNG PHÁP GIẢI
1.1 Cơ sở lý thuyết
1.2 Phương pháp giải
CHƯƠNG 2 THỰC NGHIỆM
2.1 Mã nguồn
Hình 1 Bài code
Hình 2 Bài code
2.2 Hình ảnh kết quả
Hình 3 Ma trận A, B, C
Hình 4 Đáp án câu A
Hình 5 Đáp án câu B
Hình 6 Đáp án câu C
Hình 7 Đáp án câu D
Hình 8 Đáp án câu E
Hình 9 Đáp án câu F
Hình 10 Đáp án câu G
Hình 11 Đáp án câu H
TÀI LIỆU THAM KHẢO
Trang 10CHƯƠNG 1 PHƯƠNG PHÁP GIẢI 1.1 Cơ sở lý thuyết
Ngôn ngữ
Python 3X : là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng , do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991.Python được thiết kế với ưu điểm mạnh là dễ đọc , dễ học và dễ nhớ Python là ngôn ngữ có hình thức sáng sủa , cấu trúc rõ ràng, thuận tiện cho người mới học lập trình và là được dùng rộng rãi trong phát triển trí tuệ nhân tạo
Math là một thư viện cung cấp quyền truy cập vào các hàm toán học được xác định theo tiêu chuẩn C
Matplotlib là một thư viện vẽ đồ thị cho ngôn ngữ lập trình Python và phần mở rộng toán học số NumPy của nó Nó cung cấp API hướng đối tượng để nhúng các biểu đồ vào các ứng dụng bằng bộ công cụ GUI có mục đích chung như Tkinter, wxPython, Qt hoặc GTK
1.2 Phương pháp giải
Trang 11 Tạo 3 ma trận theo yêu cầu đề bài
Sử dụng thư viện numpy và hàm np.random.randint để thực tạo ma trận với
số hàng, số cột và các số ngẫu nhiên có trong ma trận theo yêu cầu đề bài
12)3
+…+(A
17)8+(A
10)9+(A
19)10
, và in ra màn
hình.
Dùng hàm complex_expression(A) để nhận ma trận A làm đầu vào.
Khởi tạo biến kết quả là “result” ban đầu bằng 0
Sử dụng vòng lặp “for” để tính từng phần tử của biểu thức
Trong mỗi vòng lặp, tính từng phần tử thứ i trong biểu thức và cộng vào biếnkết quả “result”
Phần tử thứ i của biểu thức được tính bằng cách chia ma trận A cho 10 + i vàlấy kết quả lũy thừa với i + 1
Câu C: Lưu các hàng lẻ của ma trận A vào một ma trận mới và in ma trận kết quả thành màn hình.
Gọi một hàm để nhận ma trận A làm đối số nhận vào, cụ thể gọi hàm
odd_rows_matrix(A)
Sử dụng slicing để lấy các hàng lẻ của ma trận A, “result = A[::2, :]” sẽ lấycác hàng có chỉ số chẵn (bắt đầu từ hàng đầu tiên) của ma trận A
Gọi một hàm để lấy các hàng lẻ của ma trận A ra
Câu D: Lưu các số nguyên lẻ trong ma trận A vào một vectơ mới và in vector kết quả vào màn hình.
Trang 12 Chúng ta lọc các số nguyên lẻ từ ma trận A bằng [A % 2 == 1], nó sẽ trả vềmột ma trận boolean với giá trị True ở những vị trí mà phần tử tương ứngtrong A là số lẻ
Câu E: Lưu các số nguyên tố trong ma trận A vào một vectơ mới và in kết quả
vector vào màn hình.
Dùng hàm is_prime(n) để kiểm tra xem một số nguyên n có phải là số nguyên
tố hay không Số nguyên tố là số chỉ có hai ước số dương đó là một và chínhnó
Nếu n nhỏ hơn hoặc bằng 1 hàm trả về False vì số nguyên tố phải lớn hơn 1
Nếu n nhỏ hơn hoặc bằng 3, hàm sẽ trả về True vì 2 và 3 là số nguyên tố
Nếu n chia hết cho 2 hoặc 3 hàm sẽ trả về False
Nếu n chia hết cho bất kì số nguyên nào từ 5 đến căn bậc hai của n thì trả vềFalse còn nếu không chia hết thì trả về True
Dùng hàm prime_numbers_vector(A) để nhận vào ma trận A và trả về mộtvector chứa tất cả các số nguyên tố trong A
Dùng hàm np.vectorize(is_prime) (A) để áp dụng hàm is_prime (n) lên mỗiphần tử của A, tạo ra một ma trận Boolean với giá trị của A, tạo ra một matrận Boolean với giá trị True tại những vị trị tương ứng trong ma trận A là sốnguyên tố
Câu F: Cho một ma trận D = C x B , các phần tử đảo ngược trong các hàng lẻ của ma trận D và In ma trận kết quả lên màn hình.
Dùng hàm np.dot() để thực hiện phép nhân giữa hai ma trận B và C
D[::2, :]: Lấy ra mỗi hàng thứ hai từ ma trận D (bắt đầu từ hàng đầu tiên) Ký hiệu ::2 nghĩa là “bắt đầu từ đầu, đến cuối, với bước là 2”, nghĩa là nó sẽ lấy ramỗi phần tử thứ hai
np.flip(D[::2, :], axis=1): Lật ngược các hàng đã được lấy ra ở trên theo trục ngang (axis=1)
Câu G: Tìm các hàng có số nguyên tố tối đa trong ma trận A và in các hàng lên màn hình.
Trang 13 Sử dụng hàm max_prime_rows =[] để khởi tạo một danh sách rỗng để lưu cáchàng có số lượng số nguyên tố tối đa.
Đặt giá trị ban đầu cho số lượng số nguyên tố tối đa bằng 0 (max_prime_count
= 0)
Sử dụng hàm map để áp dụng hàm is_prime cho mỗi phần tử hàng, sau đó sum
để tính tổng số lượng số nguyên tố trong hàng
Nếu số lượng số nguyên tố trong hàng hiện tại lớn hơn số lượng số nguyên tố tối đa đã tìm được trước đó, thì cập nhật số lượng số nguyên tố tối đa và danh sách các hàng có số lượng số nguyên tố tối đa ( if prime_count >
max_prime_count)
Nếu số lượng số nguyên tố trong hàng hiện tại bằng với số lượng số nguyên tốtối đa đã tìm được trước đó, thì thêm hàng hiện tại vào danh sách các hàng có
số lượng số nguyên tố tối đa ( elif prime_count == max_prime_count)
Câu H: Tìm các hàng có chuỗi số lẻ liền kề dài nhất và in các hàng lên màn hình.
Dùng hàm max_odd_sequence_rows để khởi tạo một danh sách rỗng để lưucác hàng có chuỗi số lẻ dài nhất
Đặt giá trị ban đầu cho độ dài chuỗi số lẻ dài nhất bằng 0(max_odd_sequence_length = 0 )
Khởi tạo hai biến để theo dõi độ dài của chuỗi lẻ hiện tại (current_length ) vàchuỗi số lẻ dài nhất trong hàng ( max_length)
Kiểm tra số hiện tại có phải là số lẻ hay không ( if num % 2 != 0 )
Nếu số hiện tại là số lẻ thì tăng độ dài của chuỗi số lẻ hiện tại lên 1( current_length += 1)
Sử dụng câu lệnh (if else) để kiểm tra nếu độ dài của chuỗi số lẻ hiện tại lớnhơn độ dài chuỗi số lẻ dài nhất đã tìm được thì cập nhật độ dài chuỗi số lẻ dàinhất còn nếu số hiện tại không phải số lẻ thì trả lại độ dài chuỗi số lẻ hiện tạibằng 0
Trang 14 Sử dụng (if elif ) để kiểm tra nếu độ dài chuỗi số lẻ trong hàng lớn hơn độ dàichuỗi số lẻ đã tìm được thì cập nhật độ dài chuỗi số lẻ dài nhất và danh sáchcác hàng có chuỗi số lẻ dài nhất, còn nếu độ dài chuỗi số lẻ dài nhất tronghàng bằng với độ dài chuỗi số lẻ dài nhất đã tìm được trước đó thì thêm hànghiện tại vào danh sách các hàng có chuỗi số lẻ dài nhất
Trang 15CHƯƠNG 2 THỰC NGHIỆM
2.1 Mã nguồn
Hình 1 Bài code
Trang 16Hình 2 Bài code
2.2 Hình ảnh kết quả
Trang 17Hình 3 Ma trận A, B, C
Hình 4 Đáp án câu A
Trang 18Hình 5 Đáp án câu B
Hình 6 Đáp án câu C
Trang 19Hình 7 Đáp án câu D
các số nguyên lẻ trong ma trận A:Hàng 1:61, 45, 27, 59, 51, 55Hàng 2:43, 57, 41, 17, 67, 55Hàng 3:29, 51, 33, 89, 85, 45Hàng 4:11, 5, 71, 11, 77, 45Hàng 5:83, 67, 23, 9Hàng 6:75, 57, 75, 81, 95 Hàng 7:89, 11, 57, 3
Hàng 8:19, 47, 45, 9, 75, 89, 95 Hàng 9:87, 59, 85, 89, 11, 59, 73 Hàng 10:99, 11, 63, 59, 31, 55
Trang 21Hình 10 Đáp án câu G
Ta thấy:
hàng 1 có 3 số nguyên tốhàng 2 có 5 số nguyên tốhàng 3 có 4 số nguyên tốhàng 4 có 4 số nguyên tố, tương tự nhưvậy thì thấy hàng có nhiều số nguyên tốnhất là hàng 9 có 6 số nguyên tố Vậykết quả in ra màn hình là hàng 9
Trang 22
Hình 11 Đáp án câu H
Nhìn vào hình ma trận A: ta thấy Hàng 1, 3, 5, 8 đều có chuỗi số lẻ dàinhất là 3 số
Trang 23TÀI LIỆU THAM KHẢOTiếng Việt
Ngô Việt Hùng [2023], Giáo trình đại số tuyến tính, Hà Nội
Tiếng Anh
Allan B Downey [2023], Think Python.
Link: https://www.greenteapress.com/thinkpython/thinkpython.pdf