1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tiểu luận giữa kì môn Đại số tuyến tính cho công nghệ thông tin midterm essay applied linear algebra for it

21 0 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 đề Applied Linear Algebra for IT
Tác giả Ngô Xuân Bình
Người hướng dẫn PHẠM QUỐC HUY
Trường học Trường Đại học Tôn Đức Thắng
Chuyên ngành Đại số tuyến tính
Thể loại Bài tiểu luận giữa kì
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 21
Dung lượng 2,5 MB

Nội dung

Sau khi chuẩn bị xong hàm con “is_primen” ở trên ta bắt đầu giải bài toán:  Trước tiên ta khởi tạo một danh sách rỗng để lưu trữ các số nguyên tố.X  Sau đó, vòng lặp đầu tiên chạy qua

Trang 1

BÀI TIỂU LUẬN GIỮA KÌ MÔN ĐẠI SỐ TUYẾN TÍNH

CHO CÔNG NGHỆ THÔNG TIN

MIDTERM ESSAY: Applied Linear

Algebra for IT

Người hướng dẫn: PHẠM QUỐC HUY Người thực hiện: NGÔ XUÂN BÌNH – 52200270

Lớp : 22050401 Khoá : 26

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023

Trang 2

LỜI CẢM ƠN

Tôi muốn gửi lời cảm ơn chân thành nhất tới Thầy vì đã giúp đỡ tôi hoàn thànhbài tiểu luận của mình Sự hỗ trợ và sự chỉ dẫn từ Thầy đã giúp tôi vượt qua những khókhăn và thách thức trong quá trình nghiên cứu và viết bài tiểu luận

Thật sự, những lời khuyên và góp ý từ Thầy đã giúp tôi cải thiện bài tiểu luậncủa mình, và giúp tôi hiểu rõ hơn về chủ đề mà tôi đang nghiên cứu Tôi biết rằngkhông có gì quý giá hơn kiến thức mà Thầy đã truyền đạt cho tôi

Với sự giúp đỡ của Thầy, tôi đã hoàn thành bài tiểu luận của mình một cáchthành công và tự tin hơn Tôi chân thành cảm kích và đánh giá cao tình cảm và sự quantâm của Thầy dành cho sinh viên của mình

Một lần nữa, tôi xin cảm ơn Thầy rất nhiều vì đã trợ giúp tôi hoàn thành bài tiểuluận của mình Sự giúp đỡ và động viên của Thầy là một niềm động lực to lớn đối vớitôi, và tôi hy vọng sẽ tiếp tục được học hỏi và phát triển dưới sự hướng dẫn của Thầytrong tương lai

Trân trọng,

Ngô Xuân Bình

Trang 3

TIỂU LUẬN ĐƯỢC HOÀN THÀNH

TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi / chúng tôi và được sựhướng dẫn của TS Nguyễn Văn A; 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 trongcá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ả thuthậ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 đồ á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ự gian lận nào tôi xin hoàn toàn chịu trách nhiệm

về nội dung đồ á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ình thực hiện (nếu có)

TP Hồ Chí Minh, ngày 17 tháng 4 năm 2023

Tác giả (ký tên và ghi rõ họ tên)

Ngô Xuân Bình

Trang 4

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊNPhần xác nhận của GV hướng dẫn

_ _ _ _ _ _ _

Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)

Phần đánh giá của GV chấm bài

_ _ _ _ _ _ _

Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)

Trang 5

TÓM TẮT

Tập trung giải quyết 8 bài toán về biến đổi ma trận trên ngôn ngữ lập trìnhpython và đưa ra lời giải chi tiết cho nhưng bài trên

Trang 6

MỤC LỤC

LỜI CẢM ƠN i

TIỂU LUẬN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG ii

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN iii

TÓM TẮT iv

MỤC LỤC 1

CHƯƠNG 1 – PHƯƠNG PHÁP GIẢI QUYẾT BÀI TẬP 3

1.1 Bài 1d: Lưu các số nguyên lẻ trong ma trận A vào một vector mới, in véc tơ kết quả ra màn hình 3

1.2 Bài 1e: Lưu các số nguyên tố trong ma trận A vào một véc tơ mới, in vector tổng ra màn hình 3

1.3 Bài 1f: Cho ma trận D = CB, đảo ngược các phần tử ở các hàng lẻ của ma trận D và in ma trận kết quả ra màn hình 5

1.4 Bài 1g: Đối với ma trận A, hãy tìm các hàng có số nguyên tố nhiều nhất và in các hàng đó ra màn hình 5

1.5 Bài 1h: Đối với ma trận A, hãy tìm các hàng có dãy số lẻ liền kề dài nhất và in các hàng đó ra màn hình 7

CHƯƠNG 2 – MÃ NGUỒN VÀ ĐẦU RA 10

2.1 Triển khai các ma trận ban đầu và hàm con bổ trợ 10

2.2 Bài 1a: 10

2.2.1 Mã nguồn 10

2.2.2 Đầu ra 10

2.3 Bài 1b: 11

2.3.1 Mã nguồn 11

2.3.2 Đầu ra 11

2.4 Bài 1c: 12

Trang 7

2.4.1 Mã nguồn 12

2.4.2 Đầu ra 12

2.5 Bài 1d: 12

2.5.1 Mã nguồn 12

2.5.2 Đầu ra 12

2.6 Bài 1e: 13

2.6.1 Mã nguồn 13

2.6.2 Đầu ra 13

2.7 Bài 1f: 14

2.7.1 Mã nguồn 14

2.7.2 Đầu ra 14

2.8 Bài 1g: 14

2.8.1 Mã nguồn 14

2.8.2 Đầu ra 15

2.9 Bài 1h: 15

2.9.1 Mã nguồn 15

2.9.2 Đầu ra 16

Trang 8

CHƯƠNG 1 – PHƯƠNG PHÁP GIẢI QUYẾT BÀI TẬP

1.1 Bài 1d: Lưu các số nguyên lẻ trong ma trận A vào một vector mới, in véc

tơ kết quả ra màn hình.

Để có thể chọn ra các phần tử lẻ của ma trận và lưu chúng vào một vector mớiA

có tên là Ta sử dụng đoạn code sau Z "Z = A[A % 2 == 1]".

Cách thức hoạt động của đoạn code:

 “A % 2 == 1” sẽ tạo ra một ma trận boolean có cùng kích thước với ma

trận , trong đó các phần tử bằng A “True” nếu tương ứng với phần tử ở

ma trận là số lẻ, và A “False” nếu là số chẵn

 Sau đó, chúng ta sử dụng ma trận boolean này để chọn các phần tử của

ma trận bằng cách sử dụng toán tử A “[]” như một cách để truy xuất từngphần tử của mảng theo một điều kiện nào đó Cụ thể, các phần tử đượcchọn sẽ có chỉ số tương ứng với các phần tử của ma trận boolean bằng

“True” Kết quả là một vector mới chứa các phần tử lẻ của ma trận A 1.2 Bài 1e: Lưu các số nguyên tố trong ma trận A vào một véc tơ mới, in vector tổng ra màn hình.

Để có thể lưu các số nguyên lẻ trong ma trận vào một vector mới ta cần 1 hàmA

con “is_prime(n)”

"def is_prime(n):

if n < 2:

return False for i in range(2, int(np.sqrt(n))+1):

if n % i == 0:

return False return True"

Trang 9

Cách thức hoạt động của hàm “is_prime(n)”:

 Nếu n < 2, nó không phải là số nguyên tố và hàm trả về “False”.

 Ngược lại, nếu n >= 2, chúng ta bắt đầu kiểm tra tính nguyên tố của ,n

Để kiểm tra n có phải là số nguyên tố hay không, chúng ta sẽ dùng vònglặp với một biến từ đến i 2 “int(np.sqrt(n)) + 1”. Nếu chia hết cho n i (n

% i == 0), nghĩa là n không phải là số nguyên tố và hàm trả về False.

 Nếu không có số nào từ đến mà chia hết cho , nghĩa là là sối 2 n n nguyên tố và hàm trả về “True”.

Sau khi chuẩn bị xong hàm con “is_prime(n)” ở trên ta bắt đầu giải bài toán:

 Trước tiên ta khởi tạo một danh sách rỗng để lưu trữ các số nguyên tố.X

 Sau đó, vòng lặp đầu tiên chạy qua các hàng của ma trận (được đạiA

diện bởi biến ) và vòng lặp thứ hai chạy qua các cột của ma trận (đượci A

đại diện bởi biến ) Trong mỗi vòng lặp, chúng ta kiểm tra xem giá trịj

của phần tử tại vị trí (i, j) có phải là số nguyên tố hay không bằng cách sửdụng hàm “is_prime(n)”

 Nếu giá trị là số nguyên tố, thì giá trị đó được thêm vào danh sách X

bằng cách sử dụng phương thức append() của danh sách Cuối cùng, khi

đã duyệt qua toàn bộ các phần tử trong ma trận , danh sách sẽ chứaA X

tất cả các số nguyên tố có trong ma trận A

1.3 Bài 1f: Cho ma trận D = CB, đảo ngược các phần tử ở các hàng lẻ của

ma trận D và in ma trận kết quả ra màn hình.

Trang 10

Để có thể đảo ngược các phần tử của các hàng lẻ trong ma trận “D = C.B” taphải tạo ra ma trận bằng cú pháp D “D = np.dot(C, B)”. Sau đó ta bắt đầu giải bàitoán:

“for i in range(D.shape[0]):

if i % 2 == 0:

continue D[i, :] = D[i, ::-1]”

 Ta dùng vòng lặp for duyệt qua từng hàng của ma trận , được xác địnhD bởi biến i

 Trong vòng lặp, nếu chỉ số hàng i là số chẵn, câu lệnh “continue” sẽ

được thực thi để bỏ qua hàng này và tiếp tục vòng lặp đến hàng tiếp theo

 Nếu chỉ số hàng là số lẻ, các phần tử trong hàng đó sẽ được đảo ngượci

bằng cách sử dụng phép gán "D[i, :] = D[i, ::-1]" gán các phần tử đã bịđảo ngược của hàng lẻ thứ vào hàng lẻ đó trong ma trận Trong đó,i D

“D[i, :]” là một slice của ma trận D, chỉ định tất cả các phần tử của hàng

thứ và i “D[i, ::-1]” cũng là một slice của ma trận , chỉ định tất cả cácD

phần tử của hàng thứ i nhưng đảo ngược thứ tự của chúng

1.4 Bài 1g: Đối với ma trận A, hãy tìm các hàng có số nguyên tố nhiều nhất

và in các hàng đó ra màn hình.

Để có thể tìm các hàng có nhiều số nguyên tố nhất trong ma trận , ta cần dùngA

1 hàm đã định nghĩa trước đó ở 1.1.2 Task 1e và tạo 1 hàm mới:

 hàm “is_prime(n)” để xác định số nguyên tố trong hàng của ma trận

 hàm mới “count_primes(row)” để đếm số nguyên tố đã xác định trong

hàng của ma trận đó

“def count_primes(row):

count = 0

Trang 11

for num in row:

if is_prime(num):

count += 1 return count”

Cách thức hoạt động của hàm “count_primes(row)”:

 “count_primes(row)” nhận đầu vào là một hàng (row) trong ma trận vàtrả về số lượng số nguyên tố trong hàng đó Hàm bắt đầu bằng cách khởitạo một biến count với giá trị ban đầu là 0

 Sau đó, hàm lặp qua từng phần tử num trong hàng và kiểm tra xem num

có phải số nguyên tố không bằng cách gọi hàm “is_prime(n)” (đã đượcđịnh nghĩa trong đoạn code trước đó) Nếu num là số nguyên tố, count

sẽ được tăng lên Cuối cùng, hàm trả về giá trị của biến 1 count, là sốlượng số nguyên tố trong hàng

Sau khi chuẩn bị xong 2 hàm con, ta bắt đầu giải bài toán:

elif count == max_count:

max_rows.append(A[i])”

 Cụ thể, đoạn mã bắt đầu bằng cách khởi tạo biến max_count = 0 và biến

max_rows bằng một danh sách rỗng Tiếp theo, vòng lặp for được sửdụng để duyệt qua mỗi hàng của ma trận , đánh chỉ số của hàng bằngA biến i

Trang 12

 Với mỗi hàng, hàm “count_primes(row)” được sử dụng để đếm sốlượng số nguyên tố trong hàng đó và lưu kết quả vào biến count.

 Tiếp theo, chúng ta kiểm tra xem giá trị count có lớn hơn giá trị

max_count hiện tại hay không Nếu có , max_count được cập nhật thành

count và max_rows được đặt bằng một danh sách chứa hàng hiện tại.

 Nếu giá trị count bằng với max_count hiện tại, hàng hiện tại được thêm

vào danh sách max_rows Cuối cùng, khi vòng lặp kết thúc, các hàng có

số lượng số nguyên tố lớn nhất sẽ được lưu trong danh sách max_rows

Vì kết quả cuối cùng trả về là 1 danh sách nên khi in ra màn hình bằng cáchthông thường, mà ta phải dùng vòng lặp for:

“for row in max_rows:

current_seq_length = 0

Trang 13

 Trong mỗi vòng lặp này, biến current_seq_length được khởi tạo lại

thành và 0 max_seq_length cũng được khởi tạo thành 0

 Tiếp theo, vòng lặp thứ hai “for j in range(A.shape[1])”: được sử dụng

để duyệt qua tất cả các phần tử trong hàng hiện tại đang được xét

 Nếu phần tử hiện tại là số lẻ, thì biến current_seq_length sẽ được tăng lên một đơn vị Nếu current_seq_length > max_seq_length, thì max_seq_length sẽ được cập nhật với giá trị mới của current_seq_length.

Trang 14

 Nếu phần tử hiện tại là số chẵn, thì biến current_seq_length sẽ được

khởi tạo lại thành , vì chuỗi số lẻ đã bị phá vỡ.0

 Sau khi duyệt qua tất cả các phần tử trong hàng hiện tại, chúng ta kiểmtra nếu max_seq_length cho hàng này > longest_seq_length hiện tại.Nếu là như vậy, thì longest_seq_length sẽ được cập nhật với giá trị mớicủa max_seq_length, và danh sách odd_rows sẽ được cập nhật lại để chỉchứa chỉ số của hàng hiện tại

 Nếu max_seq_length = longest_seq_length, thì chúng ta thêm chỉ sốcủa hàng hiện tại vào danh sách odd_rows, vì hàng này có độ dài chuỗi

số lẻ liên tiếp bằng với chuỗi số lẻ liên tiếp dài nhất được tìm thấy trướcđó

 Cuối cùng, danh sách odd_rows sẽ chứa các chỉ số của các hàng có chuỗi

số lẻ liên tiếp dài nhất Các chỉ số này có thể được sử dụng để truy cập và

Trang 15

CHƯƠNG 2 – MÃ NGUỒN VÀ ĐẦU RA

2.1 Triển khai các ma trận ban đầu và hàm con bổ trợ.

2.2 Bài 1a: Tính , và in kết quả ra màn hình.

2.2.1 Mã nguồn.

2.2.2 Đầu ra.

2.3 Bài 1b: Tính , và in ra màn hình.

Trang 16

2.3.1 Mã nguồn.

2.3.2 Đầu ra.

Trang 17

2.4 Bài 1c: Lưu các hàng lẻ của ma trận A thành một ma trận mới và in ma trận kết quả ra màn hình.

Trang 18

2.6 Bài 1e: Lưu các số nguyên tố trong ma trận A vào một véc tơ mới, in vector tổng ra màn hình.

2.6.1 Mã nguồn.

2.6.2 Đầu ra.

Trang 19

2.7 Bài 1f: Cho ma trận D = CB, đảo ngược các phần tử ở các hàng lẻ của

Trang 20

2.8.2 Đầu ra.

2.9 Bài 1h: Đối với ma trận A, hãy tìm các hàng có dãy số lẻ liền kề dài nhất

và in các hàng đó ra màn hình.

2.9.1 Mã nguồn.

Trang 21

2.9.2 Đầu ra.

Ngày đăng: 04/10/2024, 15:45

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

TÀI LIỆU LIÊN QUAN

w