- Khởi tạo một danh sách rỗng odd_num_list để chứa các phần tử là số lẻ- Lặp qua từng phần tử trong ma trận bằng cách sử dụng 2 vòng for lòngnhau o Vòng for ngoài để duyệt qua từng hàng
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 MINH NHẬT - 51900667
BÁO CÁO 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 MINH NHẬT - 51900667
BÁO CÁO GIỮA KỲ
ĐẠI SỐ TUYẾN TÍNH CHO CÔNG NGHỆ THÔNG TIN
Người hướng dẫn
TS Phan Hoàng Phúc Vinh
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2024
Trang 3LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn thầy Phan Hoàng Phúc Vinh đã giảng dạy,truyền đạt kiến thức và hướng dẫn giúp em hoàn thành bài báo cáo môn Đại số tuyếntính cho Công nghệ thông tin một cách hoàn thiện
Trong quá trình làm bài báo cáo, do kiến thức cũng như kinh nghiệm cònnhiều hạn chế nên không thể tránh khỏi những thiếu sót, em rất mong nhận được ýkiến đóng góp của thầy để chúng em học hỏi được nhiều kĩ năng, kinh nghiệm và sẽngày càng hoàn thiện hơn
Em xin chân thành cảm ơn!
TP Hồ Chí Minh, ngày 26 tháng 3 năm 2024
Tác giả (Ký tên và ghi rõ họ tên)
Nguyễn Minh Nhật
Trang 4CÔ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 TS 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àotrướ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ậnxét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trongphần tài liệu tham khảo
Ngoài ra, trong Dự án còn sử dụng một số nhận xét, đánh giá cũng như 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íchnguồ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 Dự á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 26 tháng 3 năm 2024
Tác giả (Ký tên và ghi rõ họ tên)
Nguyễn Minh Nhật
Trang 5BÁO CÁO GIỮA KỲ MÔN
ĐẠI SỐ TUYẾN TÍNH CHO CÔNG NGHỆ THÔNG TIN
TÓM TẮT
Trang 6MID-TERM REPORT LINEAR ALGEBRA FOR INFORMATION TECHNOLOGY
ABSTRACT
Trang 7MỤC LỤC
DANH MỤC HÌNH VẼ vii
DANH MỤC BẢNG BIỂU viii
DANH MỤC CÁC CHỮ VIẾT TẮT ix
CHƯƠNG 1 METHODOLOGY OF SOLVING TASKS 1
1.1 Câu d 1
1.2 Câu e 1
1.3 Câu f 2
1.4 Câu g 2
1.5 Câu h 4
CHƯƠNG 2 SOURCE CODE AND OUTPUT 6
2.1 Source code 6
2.1.1 Tạo các ma trận theo đề bài 6
2.1.2 Câu a 6
2.1.3 Câu b 6
2.1.4 Câu c 6
2.1.5 Câu d 7
2.1.6 Câu e 7
2.1.7 Câu f 8
2.1.8 Câu g 8
2.1.9 Câu h 8
2.2 Output 9
2.2.1 Tạo ma trận đề bài 9
Trang 82.2.2 Câu a 10
2.2.3 Câu b 10
2.2.4 Câu c 11
2.2.5 Câu d 11
2.2.6 Câu e 12
2.2.7 Câu f 12
2.2.8 Câu g 12
2.2.9 Câu h 13
TÀI LIỆU THAM KHẢO 14
Trang 9DANH MỤC HÌNH VẼ
Hình 2.1: Source code tạo các ma trận 6
Hình 2.2: Source code câu a 6
Hình 2.3: Source code câu b 6
Hình 2.4: Source code câu c 7
Hình 2.5: Source code câu d 7
Hình 2.6: Source code câu e 7
Hình 2.7: Source code câu f 8
Hình 2.8: Source code câu g 8
Hình 2.9: Source code câu h 9
Hình 2.10: Output tạo các ma trận 10
Hình 2.11: Output câu a 10
Hình 2.12: Output câu b 11
Hình 2.13: Output câu c 11
Hình 2.14: Output câu d 12
Hình 2.15: Output câu e 12
Hình 2.16: Output câu f 12
Hình 2.17: Output câu g 13
Hình 2.18: Output câu h 13
Trang 10DANH MỤC BẢNG BIỂU
No table of figures entries found.
Trang 11DANH MỤC CÁC CHỮ VIẾT TẮT
Trang 12- Khởi tạo một danh sách rỗng odd_num_list để chứa các phần tử là số lẻ
- Lặp qua từng phần tử trong ma trận bằng cách sử dụng 2 vòng for lòngnhau
o Vòng for ngoài để duyệt qua từng hàng (i)
o Vòng for trong để duyệt qua từng cột (j)
- Sử dụng điều kiện để kiểm tra xem từng phần tử của ma trận A (A[i][j])if
có thỏa mãn yêu cầu đề bài là số lẻ hay không Nếu phần tử nào thỏa mãnđiều kiện thì thêm phần tử đó vào danh sách odd_num_list bằng lệnh
- Viết hàm kiểm tra số nguyên tố
o Số nguyên tố là số chỉ chia hết cho chính nó và chia hết cho
o Sử dụng câu lệnh để kiểm tra các điều kiện đảm bảo một số if n
truyền vào là số nguyên tố
o Nếu n < 2 thì không phải là số nguyên tố, sẽ trả về False
Trường hợp đặc biệt, nếu n =2 thì là số nguyên tố, sẽ trả về True
Trang 13o Ngược lại, chúng ta chúng ta sẽ sử dụng for duyệt từ [2,n) Nếu n
chia hết cho số nào trong khoảng này thì không phải số nguyên tố,
trả về False.
- Khởi tạo một danh sách rỗng prime_list
- Lặp qua từng phần tử trong ma trận bằng cách sử dụng 2 vòng for lòngnhau
o Vòng for ngoài để duyệt qua từng hàng (i)
o Vòng for trong để duyệt qua từng cột (j)
- Sử dụng điều kiện để kiểm tra xem từng phần tử của ma trận A (A[i][j])if
có thỏa mãn yêu cầu đề bài là số nguyên tố hay không Nếu phần tử nào
thỏa mãn điều kiện thì thêm phần tử đó vào danh sách prime_list bằng lệnh append
- Chuyển danh sách thành mảng bằng np.array sau đó in kết quả ra màn hình bằng lệnh print
1.3 Câu f
Given a matrix D = CB, reverse elements in the odd rows of the matrix D, and print the resultant matrix to the screen
Các bước thực hiện:
- Khai báo ma trận D = CB bằng lệnh np.dot(C,B) sau đó lưu kết quả vào D
- Duyệt qua từng hàng của ma trận bằng cách sử dụng vòng lặp D for với
biến chạy từ 0 đến chiều dài của ma trận trừ đi 1 i D (len(D)).
- Trong mỗi vòng lặp, kiểm tra xem hàng có phải là số lẻ không i ((i+1) %
2 != 0) Nếu là hàng lẻ, chúng ta đảo ngược thứ tự của các phần tử trong
hàng đó bằng cách sử dụng cú pháp slice [::-1] và gán lại vào hàng đó
1.4 Câu g
Regarding the matrix A, find the rows which have maximum count of prime numbers, and print the rows to the screen
Các bước thực hiện:
Trang 14- Đếm số lượng số nguyên tố có trong mỗi hàng của ma trận A
o Khởi tạo một danh sách rỗng prime_counts để lưu trữ số lượng các
số nguyên tố của mỗi hàng trong ma trận A
o Tiếp theo, duyệt qua từng hàng của ma trận A bằng vòng lặp for
với biến chạy từ [0; 10)i
o Tạo một biến count với giá trị ban đầu sau mỗi vòng lặp for đối với hàng bằng 0
o Trong mỗi hàng, duyệt qua từng phần tử của hàng đó bằng vòng lặp
for với biến j.
o Nếu phần tử đó là số nguyên tố (sử dụng hàm isPrime()) thì tăng biến đếm count thêm 1
o Sau khi đã đếm xong số lượng số nguyên tố trong mỗi hàng, chúng
ta thêm giá trị của biến count vào danh sách prime_counts
- Tìm số lượng lớn số nguyên tố lớn nhất trong danh sách bằng cách sử
dụng hàm max()
- Tìm chỉ số của các hàng có số lượng số nguyên tố lớn
o Khởi tạo một danh sách rỗng để lưu trữ các chỉ số của các hàng id
index là chỉ số của phần tử trong danh sách
value là giá trị của phần tử tương ứng trong danh sách
o Sử dụng trong vòng lặp for để truy cập cả chỉ số và giá trị của các phần tử:
Trang 15- Cuối cùng, duyệt qua các chỉ số của các hàng có số lượng số nguyên tốlớn nhất trong danh sách , và in các hàng đó ra màn hình từ ma trận A.id
o Biến current_length được sử dụng để lưu trữ độ dài của chuỗi số
lẻ liên tục hiện tại đang được xem xét
o Hàm duyệt qua từng phần tử num trong hàng row.
o Nếu num là số lẻ, tăng current_length thêm 1
o Nếu num là số chẵn, cập nhật max_length với giá trị lớn nhất giữa
max_length và current_length bằng hàm max(), sau đó đặt
current_length về giá trị 0.
Trang 16o Cuối cùng, trước khi trả về max_length, kiểm tra và cập nhật
max_length một lần nữa với giá trị lớn nhất giữa max_length và
current_length bằng hàm max().
- Tính toán độ dài dài nhất của chuỗi số lẻ trong mỗi hàng của ma trận A:
o Khởi tạo danh sách rỗng max_odd_sequence_lengths để lưu trữ độdài dài nhất của chuỗi số lẻ trong mỗi hàng của ma trận A
o Dùng một vòng lặp for để duyệt qua từng hàng row trong ma trậnA
o Trong mỗi vòng lặp, tính độ dài dài nhất của chuỗi số lẻ trong
longest_contiguous_odd_sequence(row) và lưu kết quả vào length.
o Độ dài này sau đó được thêm vào danh sách
max_odd_sequence_lengths bằng lệnh append.
- Tìm hàng có độ dài dài nhất của chuỗi số lẻ:
o Biến max_length được sử dụng để lưu trữ độ dài dài nhất củachuỗi số lẻ trong tất cả các hàng
o Khởi tạo danh sách rỗng rows_with_max_length chứa chỉ số cáchàng có độ dài số lẻ dài nhất
o Sử dụng vòng lặp for kết hợp với enumerate() để duyệt qua danh
sách max_odd_sequence_lengths.
o Trong mỗi vòng lặp, nếu độ dài của chuỗi số lẻ trong hàng tươngứng bằng max_length, ta thêm chỉ số hàng đó vào danh sách
rows_with_max_length.
- In ra các hàng có độ dài dài nhất của chuỗi số lẻ:
o Cuối cùng, sử dụng vòng lặp for để duyệt qua các chỉ số hàngtrong danh sách rows_with_max_length
Trong mỗi vòng lặp, in ra hàng tương ứng từ ma trận A
Trang 17CHƯƠNG 2 SOURCE CODE AND OUTPUT2.1 Source code
2.1.1 Tạo các ma trận theo đề bài
Hình 2.1: Source code tạo các ma trận
Trang 20Hình 2.9: Source code câu h
2.2 Output
2.2.1 Tạo ma trận đề bài
Trang 242.2.9 Câu h Hình 2.17: Output câu g
Hình 2.18: Output câu h