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

Báo cáo giữa kỳ Đại số tuyến tính Ứng dụng cho công nghệ thông tin

38 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

Tiêu đề Báo Cáo Giữa Kỳ Đại Số Tuyến Tính Ứng Dụng Cho Công Nghệ Thông Tin
Tác giả Lê Như Đạt
Người hướng dẫn ThS. Phạm Quốc Duy
Trường học Trường Đại Học Tôn Đức Thắng
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Năm xuất bản 2024
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 38
Dung lượng 1,57 MB

Cấu trúc

  • CHƯƠNG 1. PHƯƠNG PHÁP GIẢI QUYẾT NHIỆM VỤ (8)
    • 1.1 Mô tả ngắn về chương trình (8)
    • 1.2 Giải thích chi tiết các hàm (10)
      • 1.2.1 Chuẩn bị dữ liệu (10)
      • 1.2.2 Hàm Ex_a() (11)
      • 1.2.3 Hàm Ex_b() (12)
      • 1.2.4 Hàm Ex_c() (13)
      • 1.2.5 Hàm isPrime (16)
      • 1.2.6 Hàm Ex_d() (16)
      • 1.2.7 Hàm getMaxRowIndices(arr) -> list (17)
      • 1.2.8 Hàm Ex_e() (18)
      • 1.2.9 Hàm Ex_f() (19)
  • CHƯƠNG 2. KẾT QUẢ (20)
    • 2.1 Lần chạy đầu tiên (0)
    • 2.2 Lần chạy thứ 2 (23)
    • 2.3 Lần chạy thứ 3 (26)
    • 2.4 Lần chạy thứ 4 (29)
    • 2.5 Lần chạy thứ 5 (33)
  • TÀI LIỆU THAM KHẢO (38)

Nội dung

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ệucủ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ự

PHƯƠNG PHÁP GIẢI QUYẾT NHIỆM VỤ

Mô tả ngắn về chương trình

Chương trình sử dụng NumPy để xử lý ma trận, kết hợp với các hàm toán học như math và vectorize Mỗi hàm con trong chương trình đảm nhiệm một nhiệm vụ riêng biệt.

 Ex_a: Tính tổng ma trận sau khi kết hợp các biến đổi ma trận.

 Ex_b: Tính tổng dạng ma trận vào lớp lũy thừa dựa trên dãy chia liên tiếp.

 Ex_c: Tạo vector từ các phần tử lẻ trong ma trận.

 Ex_d: Lọc các số nguyên tố trong ma trận.

 Ex_e: Tìm dòng chứa nhiều số nguyên tố nhất.

 Ex_f: Tìm dòng chứa nhiều cặp số lẻ liên tiếp nhất.

Vectorize là một kỹ thuật giúp tạo mã nhanh hơn và dễ đọc hơn bằng cách thực hiện tính toán trên một tập hợp giá trị cùng một lúc, thay vì lặp qua từng phần tử riêng lẻ Ví dụ, khi cộng các phần tử của hai mảng a = [a0, a1, a2] và b = [b0, b1, b2] để tạo ra mảng mới c = [a0 + b0, a1 + b1, a2 + b2], sự khác biệt giữa cách thực hiện không vectơ hóa (sử dụng vòng lặp) và vectơ hóa sẽ được thể hiện rõ ràng.

Hình 1 Chuẩn bị dữ liệu mẫu

Trước tiên, chúng ta hãy hoàn thành việc này bằng cách sử dụng phương pháp không vectơ hóa sử dụng vòng lặp for…

Hình 2 Không sử dụng phương pháp vectorizeBây giờ, chúng ta hãy thử phương pháp vectơ hóa…

Ký hiệu của phương pháp vectơ hóa rõ ràng hơn nhiều so với phương pháp không vectơ hóa, thể hiện chính xác các phép toán đang diễn ra, như phép cộng vectơ theo từng phần tử Đặc biệt, với ma trận 2D, phương pháp này càng rõ ràng hơn do yêu cầu các vòng lặp lồng nhau Trong khoa học dữ liệu, việc làm việc với các vectơ và ma trận dữ liệu là phổ biến, và việc thực hiện các phép toán theo từng phần tử là cần thiết, vì vậy ký hiệu vectơ hóa thường được ưu tiên để tăng tính rõ ràng trong mã.

Trong phần “Programming Part” phần bài tập được áp dụng phương pháp này chính là Ex_d.

Giải thích chi tiết các hàm

Hình 4 Chuẩn bị dữ liệu

Trong bài tập này, chúng ta sẽ tích hợp hai thư viện quan trọng là Numpy và Math, nhằm hỗ trợ hiệu quả cho việc giải quyết các bài tập trong phần "Programming Part".

Numpy (Numeric Python) là một thư viện toán học mạnh mẽ và phổ biến trong Python, cho phép xử lý hiệu quả các ma trận và mảng Thư viện này đặc biệt hữu ích cho việc làm việc với dữ liệu ma trận và mảng lớn, mang lại tốc độ xử lý nhanh hơn nhiều so với việc sử dụng chỉ “core Python” đơn thuần.

 A: Tạo ma trận ngẫu nhiên 10x10 với giá trị từ 1 đến 100.

 B: Tạo ma trận ngẫu nhiên 2x10 với giá trị từ 1 đến 20.

 C: Tạo ma trận ngẫu nhiên 10x2 với giá trị từ 1 đến 20.

Hàm này tính tổng kết hợp các biến đổi ma trận được cho bởi công thức sau:

 A.T: Ma trận chuyển vị của A.

 C @ B: Tích ma trận giữa C và B.

 B.T @ C.T: Tích ma trận giữa ma trận chuyển vị của B và C.

 res: Ma trận kết quả là tổng các ma trận.

Hàm này tính tổng lũy thừa chia theo chỉ số trong khoảng từ 10 đến 19 theo công thức sau:

 res: Biến tích lũy kết quả tính tổng.

 (A / i): Chia từng phần tử của ma trận A cho số i.

 **exp: Lũy thừa theo chỉ số exp.

 exp += 1: Tăng luỹ thừa sau mỗi lần lặp.

Hàm Ex_c áp dụng kỹ thuật boolean indexing trong NumPy để lọc và trích xuất các phần tử trong ma trận A, đảm bảo chỉ lấy những phần tử thỏa mãn điều kiện là số lẻ.

 Kiểm tra từng phần tử của ma trận A để xác định phần tử nào là số lẻ.

 Kết quả trả về là một ma trận Boolean cùng kích thước với A, chứa True tại các vị trí số lẻ và False tại các vị trí còn lại.

 Đây là boolean indexing: Chọn ra tất cả các phần tử trong ma trận A tại các vị trí mà giá trị Boolean tương ứng là True.

 Kết quả trả về là một mảng 1D chứa toàn bộ các số lẻ trong ma trận A.

 Lưu trữ mảng 1D kết quả chứa các số lẻ.

 print(new_vector) hiển thị mảng các số lẻ.

Giả sử ma trận A là:

Hình 10 Kết quả ví dụ Ex_c

Hình 11 Hàm isPrime Hàm này nhận vào một số nguyên n và trả về True nếu n là số Nguyên tố, và ngược lại.

 np.vectorize(isPrime): Biến hàm isPrime thành vectorized để áp dụng cho ma trận.

 A[new_vector]: Trả về các phần tử nguyên tố trong A

Hàm này nhận vào một mảng hai chiều và trả về danh sách chỉ số của các dòng có nhiều phần tử nhất Đầu tiên, hai biến max_row_length và indices được khởi tạo với giá trị 0 và danh sách rỗng Sau đó, hàm sẽ duyệt qua từng dòng trong mảng để xác định dòng có số lượng phần tử tối đa Đây là công cụ hữu ích để thực hiện các yêu cầu trong câu e và f một cách dễ dàng hơn.

Hàm này xác định các dòng trong ma trận A chứa nhiều số nguyên tố nhất Đầu tiên, biến res được khởi tạo với giá trị danh sách rỗng Sau đó, hàm lặp qua từng dòng, tạo biến temp cũng là danh sách rỗng Trong quá trình duyệt qua từng phần tử của dòng, hàm kiểm tra xem phần tử có phải là số nguyên tố hay không, nếu đúng thì thêm vào temp Cuối cùng, sau khi hoàn tất vòng lặp con, hàm sẽ trả về kết quả.

To enhance the results in the array, the function getMaxRowIndices will return a list of the relevant indices Ultimately, by storing these identified positions in the variable 'answer,' we can obtain the final solution.

 temp.append: Lưu các phần tử nguyên tố vào danh sách tạm thời.

 maxRowIndex: Tìm chỉ số các dòng chứa nhiều nguyên tố nhất.

 answer: Trả về ma trận có các dòng tìm được.

Hàm này tìm các dòng trong ma trận A có nhiều chuỗi số lẻ liên tiếp Đầu tiên, biến res được khởi tạo với giá trị danh sách rỗng Sau đó, lặp qua từng dòng trong ma trận, tạo biến temp cũng là danh sách rỗng Tiếp theo, kiểm tra từng phần tử trong dòng để xác định xem phần tử hiện tại và phần tử tiếp theo đều là số lẻ hay không, và nếu phần tử lẻ đó chưa được ghi nhận.

To incorporate the value 13 into the temporary variable, we add it to temp Upon completing the while loop, we append temp to the results The function getMaxRowIndices will return a list of the resulting indices Ultimately, we simply need to store the identified positions in the answer to obtain the final result.

 while i < len(row) - 1: Lần lượt duyệt qua từng cặp phần tử trong dòng.

 row[i] % 2 != 0: Kiểm tra phần tử thắng lẻ.

 temp.append: Lưu các phần tử lẻ liên tiếp vào danh sách tạm thời.

 maxRowIndex: Xác định dòng chứa nhiều cặp số lẻ liên tiếp nhất.

 answer: Ma trận chứa các dòng đó.

KẾT QUẢ

Lần chạy thứ 2

Lần chạy thứ 3

Lần chạy thứ 4

Lần chạy thứ 5

Ngày đăng: 24/12/2024, 16:07

w