sử dụng ngôn ngữ lập trình python cài đặt các thuật toán trong học phần giải tích số trong chương trình đào tạo ngành khoa học dữ liệu của trường đại học kinh tế kỹ thuật công nghiệp

97 2 0
Tài liệu đã được kiểm tra trùng lặp
sử dụng ngôn ngữ lập trình python cài đặt các thuật toán trong học phần giải tích số trong chương trình đào tạo ngành khoa học dữ liệu của trường đại học kinh tế kỹ thuật công nghiệ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

S dử ụng Python cài đặt các thuật toán trong chương 2 của học phần Gi i tích sảố: Gi i gả ần đúng nghiệm thực của phương trình.... Sử ụng Python cài đặ d t các thuật toán trong chương 3

Trang 1

KHOA KHOA HỌC ỨNG DỤNG

K THU T CÔNG NGHI P ỸẬỆ

Tên đề tài:

TRONG CHƯƠNG TRÌNH ĐÀO TẠO NGÀNH KHOA HỌC

CÔNG NGHIỆP

Giảng viên hướng dẫn: TS Chu Bình Minh

Chủ nhiệm đề tài: Trần B o Trung ảL p DHTI13A1HN

Trang 2

TRONG CHƯƠNG TRÌNH ĐÀO TẠO NGÀNH KHOA HỌC

CÔNG NGHIỆP

Giảng viên hướng dẫn: TS Chu Bình Minh

Chủ nhiệm đề tài: Trần B o Trung ảL p DHTI13A1HN

KHOA KHOA HỌC ỨNG DỤNG

K THU T CÔNG NGHI PỸẬỆ

Trang 3

HÀ NỘI 4/2023

Trang 4

2 MỤC ĐÍCH, ĐỐI TƯỢNG VÀ PH M VI NGHIÊN C U CẠỨỦA ĐỀ TÀI: 3

3 PHƯƠNG PHÁP VÀ NHIỆM V C A NGHIÊN CỤ ỦỨU: 3

4 CẤU TRÚC VÀ CÁC K T QUẾẢ CỦA ĐỀ TÀI: 3

5 Ý NGHĨA CỦA ĐỀ TÀI: 3

Chương 1 Giới thiệu về ngôn ngữ lập trình Python 4

1.1 T ng quan v ngôn ng l p trình Pythonổềữ ậ 4

1.1.1 Giới thi u v ngôn ng l p trình Pythonệềữ ậ 4

1.1.2 Cài đặt Python 4

1.2 Giới thi u v Python lõiệề 5

1.2.1 M t s ộ ố kiểu dữ liệu trong Python lõi 5

1.2.2 M t s phép toán và hàm thông dộ ốụng 5

1.2.3 Hàm và thư việ 16n1.2.4 M t s ộ ố thư viện toán học 17

1.2.5 Thư viện Numpy 20

1.2.6 Vẽ đồ thị ớ v i Matplotlib 23

Chương 2 Sử ụng Python cài đặ d t các thu t toán trong h c ph n Gi i tích sậ ọ ầ ả ố 25

2.1 Giới thi u v ệề giải tích số 25

2.2 S dử ụng Python cài đặt các thuật toán trong chương 2 của học phần Gi i tích sảố: Gi i gả ần đúng nghiệm thực của phương trình 26

2.2.1 S dử ụng Python để cài đặt cho phương pháp tìm kiếm gia tăng 26 2.2.2 S dử ụng Python để cài đặt cho phương pháp chia đôi 28

Trang 5

2.2.3 S dử ụng Python để cài đặt cho phương pháp dây cung 29

2.2.4 S dử ụng Python để cài đặt cho phương pháp tiếp tuyến 32

2.2.5 S dử ụng Python để cài đặt cho phương pháp lặp đơn 35

2.3 Sử ụng Python cài đặ d t các thuật toán trong chương 3 của học phần Gi i tích sảố: Gi i hả ệ phương trình đại số tuyến tính 37

2.3.1 S dử ụng Python để cài đặt cho phương pháp Gauss giải hệ phương trình: 38

2.3.2 S dử ụng Python để cài đặt cho phương pháp phân rã LU 41

2.3.3 S d ng thu t toán ph n t ử ụậầử trội để ả ến phương pháp c i ti

Gauss và phương pháp phân rã LU 43

2.3.4 Phương pháp lặp Jacobi xấp xỉ nghi m cho h ệệ phương trình đại số tuyến tính 47

2.3.5 Phương pháp lặp Gauss-Seidel xấp x nghi m cho h ỉệệphương trình đại số tuyến tính 49

2.3.6 Phương pháp lặp Gradient liên hợp xấp x nghi m cho h ỉệệphương trình đại số tuyến tính 50

phần Gi i tích sảố: Nội suy và phương pháp bình phương nhỏ nhất 53

2.4.1 S dử ụng Python để cài đặt cho phương pháp Lagrange 55

2.4.2 S dử ụng Python để cài đặt cho phương pháp Newton 56

2.4.3 S dử ụng Python để cài đặt cho thuật toán Neville x p x các ấỉđiểm d ữ li u 58ệ

2.4.4 S dử ụng Python để cài đặt cho phương pháp Bình phương

nh nhỏ ất x p x ấỉ các điểm d ữ liệu bằng đa thứ 59c

Trang 6

2.5.5 S dử ụng Python để cài đặt cho phương pháp cầu phương

Gaussian x p x ấỉ tích phân xác định 71

2.5.6 Xấp x tích phân kép trên mi n t giácỉềứ 77 2.5.7 Xấp x tích phân kép trên mi n tam giácỉề 80

phần Gi i tích sảố: Tính gần đúng nghiệm của phương trình vi phân 82 2.6.1 S dử ụng Python để cài đặt cho phương pháp Euler xấp xỉ

nghiệm cho phương trình vi phân 84

2.6.2 S dử ụng Python để cài đặt cho phương pháp Runge-Kutta87

KẾT LU N Ậ 92 TÀI LI U THAM KH O Ệ Ả 93 PHỤ L C Ụ 95

Trang 7

MỤC LỤC HÌNH

Hình 1 1 Quá trình hoạt động của if trong Python 8

Hình 1 2 Quá trình hoạt động của if else trong Python 9

Hình 1 3 Quá trình hoạt động của if elif else trong Python 10

Hình 1 4 Quá trình hoạt động của for loop trong Python 11

Hình 1 5 Quá trình hoạt động của while loop trong Python 12

Hình 2 1 Hình minh họa phương pháp dây cung 30

Hình 2 2 Hình minh họa phương pháp tuyến tính 32

Hình 2 3 Hình minh họa phương pháp lặp đơn 35

Hình 2 4 Minh họa nội suy 54

Hình 2 5 Minh họa khớp đường cong 60

Hình 2 6 Vị trí các điểm lấy tích phân 81

Hình 2 7 Sai số của phương pháp Euler 86

Trang 8

MỤC LỤC BẢNG

Bảng 1 1 Danh sách các định dạng dữ liệu trong Python 5

Bảng 1 2 Danh sách các phép toán số học cơ bản trong Python 5

Bảng 1 3 Danh sách các toán tử trong Python 6

Bảng 1 4 Danh sách các toán tử so sánh trong Python 7

Bảng 1 5 Danh sách các cách ép kiểu trong Python 13

Bảng 1 6 Danh sách các hàm tích hợp sẵn trong Python 13

Bảng 1 7 Danh sách các hàm số học được sử dụng trong thư viện Math 18

Bảng 1 8 Danh sách các hàm lượng giác được sử dụng trong thư viện Math 18

Bảng 1 9 Danh sách các hàm Hypebol được sử dụng trong thư viện Math 18

Bảng 1 10 Danh sách các hàm logarit được sử dụng trong thư viện Math 19

Bảng 1 11 Danh sách các hằng số được sử dụng trong thư viện Math 19

Bảng 1 12 Danh sách các hàm hỗ trợ tính số phức được sử dụng trong thư viện Cmath 20

Bảng 1 13 Danh sách các hàm thống kê sử dụng trong Numpy 22

Bảng 1 14 Danh sách các phép toán với mảng sử dụng trong Numpy 23

Bảng 2 1 Tập các điểm dữ liệu 53

Bảng 2 2 Hướng dẫn tuyến tính hóa một số đường cong 63

Bảng 2 3 Bảng hệ số công thức sai phân trung tâm xấp xỉ đạo hàm 64

Bảng 2 4 Bảng hệ số công thức sai phân tiến bậc hai xấp xỉ đạo hàm 65

Bảng 2 5 Bảng hệ số công thức sai phân lui bậc hai xấp xỉ đạo hàm 65

Bảng 2 6 Bảng tham chiếu của Gauss-Legendre 73

Bảng 2 7 Bảngtham chiếu Gaus-Laguerre 76

Bảng 2 8 Bảng tham chiếu Gaus-Hermite 76

Bảng 2 9 Bảng tham chiếu Gauss với Lôgarit kỳ dị 77

Trang 9

DANH MỤC TỪ VIẾT TẮT

Trang 10

LỜI MỞ ĐẦU

1 T NG QUAN V TÌNH HÌNH NGHIÊN C U VÀ LÝ DO CH ỔỀỨỌN ĐỀ TÀI Giải tích số (hoặc Phương pháp tính) là các kỹ thuật mà theo đó các bài toán được xây d ng sao cho chúng có thự ể được giải bằng các phép toán s h c và logic Các phép ố ọtính này được thực hiện một cách chính xác và hiệu quả bởi các máy tính kỹ thuật số nên các kỹ thuật trong phương pháp tính rất phù h p cho vi c tính toán b ng máy tính ợ ệ ằTrước khi máy tính ra đời, việc thực hiện tính toán một số lượng lớn các phép toán số h c và logic t n nhi u th i gian và nhàm chán nên Gi i tích sọ ố ề ờ ả ố chưa được quan tâm Tuy nhiên, v i sớ ự ra đờ ủi c a máy tính k thu t s ngày càng nhanh và ph bi n, vai trò ỹ ậ ố ổ ếcủa Giải tích s trong viố ệc giải quyết các vấn đề ỹ thuật và khoa h k ọc đã trở nên quan trọng Do vậy, Gi i tích sả ố đã trở thành m t ph n n n t ng giáo dộ ầ ề ả ục cơ bản cho m i k ỗ ỹsư, ỗ m i nhà khoa học, đặc biệt là trong Khoa học dữ liệu

Giải tích số được gi ng cho sinh viên ngành Khoa h c dả ọ ữ liệu của trường Đạ ọc i hKinh tế – ỹ thuậ K t Công nghi p ệ [1] ớ v i thời lượng 3 tín ch M c tiêu c a h c ph n ỉ ụ ủ ọ ầ [2]là:

Mục tiêu về ế ki n thức:

- Sinh viên hiểu được các phương pháp giả ối s các bài toán g m: x p x nghiồ ấ ỉ ệm thực của phương trình; giải hệ phương trình tuyến tính; x p xấ ỉ đường cong đi qua các điểm dữ liệu; tính gần đúng tích phân, đạo hàm; xấp xỉ nghiệm của phương trình vi phân

- Hiểu cách s dử ụng sơ đồ khối để mô tả các thuật toán.Mục tiêu về ỹ năng: k

- Sinh viên có khả ứng dụng các phương pháp số vào gi i quy t các bài toán ả ếchuyên môn có liên quan

Mục tiêu về đạo đức và trách nhiệm:

- Rèn luyện được tác phong làm vi c t m , nghiêm túc, chệ ỉ ỉ ủ động, tích cực, chăm chỉ, cẩn thận

Trong tài li u h c tệ ọ ập Phương pháp tính của Trường dạy cho sinh viên các ngành Điện T– ự động hoá, Điện tử, Cơ khí… các thuật toán được cài đặt bằng ngôn ng lập ữtrình Matlab [3] Vi c s d ng ngôn ng lệ ử ụ ữ ập trình Matlab cài đặt các thu t toán r t phù ậ ấh p cho sinh viên các chuyên ngành này vì vi c này v a giúp cho sinh viên hi u sâu ợ ệ ừ ểsắc hơn về các thu t toán, v a giúp cho sinh viên làm quen và rèn luy n kậ ừ ệ ỹ năng viết code b ng Matlab vì Matlab là ngôn ng l p trình r t quan tr ng cho sinh viên các ằ ữ ậ ấ ọngành này Tuy nhiên, v i ngành Khoa h c dớ ọ ữ liệu thì ngôn ng ữ được s d ng ph bi n ử ụ ổ ế

Trang 11

và r t quan tr ng là ngôn ng l p trình Python nên vi c s d ng ngôn ng l p trình ấ ọ ữ ậ ệ ử ụ ữ ậMatlab đểcài đặt các thuật toán là không phù hợp

Python là ngôn ng lữ ập trình hướng đối tượng, c p cao, m nh mấ ạ ẽ, được t o ra bạ ởi Guido van Rossum với rất nhiều ưu điểm phù h p v i ngành Khoa hợ ớ ọc dữ liệ [4] như: u

- Ngôn ng lữ ập trình đơn giản, d hễ ọc: Python có cú pháp rất đơn giản, rõ ràng Nó dễ đọc và viết hơn rất nhi u khi so sánh v i nh ng ngôn ng l p trình khác ề ớ ữ ữ ậnhư C++, Java, C# Python làm cho việc lập trình trở nên thú vị, cho phép lập trình viên tập trung vào nh ng gi i pháp ch không ph i cú pháp ữ ả ứ ả

- Miễn phí, mã ngu n mồở: Lập trình viên có th t do s d ng và phân phể ự ử ụ ối Python, thậm chí là dùng nó cho mục đích thương mại Vì là mã ngu n m , l p ồ ở ậtrình viên không nh ng có th s d ng các ph n mữ ể ử ụ ầ ềm, chương trình được viết trong Python mà còn có thể thay đổi mã ngu n c a nó Python có m t c ng ồ ủ ộ ộđồng r ng l n, không ngừng cảộ ớ i thi n nó m i lần cập nhật ệ ỗ

- Khả năng di chuyển: Các chương trình Python có thể di chuy n t n n t ng ể ừ ề ảnày sang n n t ng khác và ch y nó mà không có b t kề ả ạ ấ ỳ thay đổi nào Nó ch y ạliền m ch trên h u hạ ầ ết t t cấ ả các nền tảng như Windows, macOS, Linux.

- Khả năng mở rộng và có thể nhúng: Giả s mử ột ứng dụng đòi hỏ ựi s ph c t p ứ ạrất l n, l p trình viên có th d dàng k t h p các ph n code b ng C, C++ và ớ ậ ể ễ ế ợ ầ ằnh ng ngôn ng khác (có th gữ ữ ể ọi đượ ừ C) vào code Python Điềc t u này s cung ẽcấp cho ng d ng cứ ụ ủa lập trình viên những tính năng tốt hơn cũng như khả năng scripting mà những ngôn ng l p trình khác khó có th ữ ậ ể làm được.

- Ngôn ng thông d ch c p cao:ữịấ Không giống như C/C++, v i Python, l p trình ớ ậviên không ph i lo l ng nh ng nhi m vả ắ ữ ệ ụ khó khăn như quản lý bộ nhớ, d n d p ọ ẹnh ng dữ ữ liệu vô nghĩa Khi chạy code Python, nó s tẽ ự động chuyển đổi code sang ngôn ng máy tính có th hi u L p trình viên không c n lo l ng v b t k ữ ể ể ậ ầ ắ ề ấ ỳhoạt động c p th p nào ở ấ ấ

- Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một

số lượng lớn thư viện tiêu chu n giúp cho công vi c l p trình c a l p trình viên ẩ ệ ậ ủ ậtrở nên dễ ở hơn rấth t nhiều, đơn giản vì không phải tự viế ấ ả code t t t c

- Hướng đối tượng: M i thọ ứ trong Python đều là hướng đối tượng L p trình ậhướng đối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan V i OOP, l p trình viên có th phân chia nh ng vớ ậ ể ữ ấn đề ph c t p thành ứ ạnh ng t p nh ữ ậ ỏ hơn bằng cách tạo ra các đối tượng

Ngôn ng lữ ập trình Python được s d ng là ngôn ng chính, xuyên su t quá trình ử ụ ữ ốđào tạo ngành Khoa học dữ liệu của Trường Đại học Kinh tế – Kỹ thuật Công nghiệp [1] Do đó, việc sử dụng Python để cài đặt các thuật toán trong học phần Giải tích số sẽ

Trang 12

giúp cho sinh viên ngành Khoa h c dọ ữ liệu hi u sâu sể ắc hơn về thuật toán, v a giúp ừcho sinh viên rèn luyện k ỹ năng lập trình bằng ngôn ng lữ ập trình Python

2. MỤC ĐÍCH, ĐỐI TƯỢNG VÀ PH M VI NGHIÊN C U CẠỨỦA ĐỀ TÀI:

- Nghiên cứu các phương pháp tính trong học phần Giải tích số - Nghiên cứu sơ đồ khối của các thuật toán trong học phần Giải tích s ố- Nghiên cứu ki n th c, k ế ứ ỹ thuật lập trình b ng ngôn ng Python ằ ữ

- Dựa vào các sơ đồ kh i, s d ng ngôn ng ố ử ụ ữ Python để cài đặt cho các thuật toán.3. PHƯƠNG PHÁP VÀ NHIỆM V C A NGHIÊN CỤ ỦỨU:

- Phân tích các tính ch t cấ ủa sơ đồ kh i c a các thu t toán trong h c ph n Giố ủ ậ ọ ầ ải tích số

- Tổng h p mợ ột số ế ki n thức, kỹ thuật về ngôn ng l p trình Python ữ ậ

- S d ng ngôn ng lử ụ ữ ập trình Python cài đặt các thu t toán trong h c ph n Giậ ọ ầ ải tích số

4. CẤU TRÚC VÀ CÁC KẾT QUẢ ỦA ĐỀ TÀI: C

Ngoài ph n l i mầ ờ ở đầu, k t lu n và tài li u tham khế ậ ệ ảo, đề tài được chia làm 2 chương với cấu trúc và kết qu của tả ừng chương như sau:

- Chương 1 Giới thi u v ngôn ng lệ ề ữ ập trình Python: Chương này sẽ trình bày t ng quan v ngôn ng l p trình Python và mổ ề ữ ậ ột số thư viện h ỗ trợ trong Gi i tích ảs ố

- Chương 2 Sử ụng Python cài đặ d t các thuật toán trong học phần Giải tích số: Đây là chương chứa nội dung chính của đề tài

5. Ý NGHĨA CỦA ĐỀ TÀI:

Python được sử dụng rộng rãi trong lĩnh vực khoa học dữ liệu vì nó có cú pháp trực quan, tương đối dễ học và sử dụng Ngoài ra, Python còn có hàng trăm thư viện và Framework giúp cho vi c x lý dệ ử ữ liệu tr nên dở ễ dàng hơn nên có cộng đồng s d ng ử ụl n M t khác, ớ ặ Giải tích s có vai trò quan tr ng trong khoa h c dố ọ ọ ữ liệu, vì nó giúp x ửlý và phân tích các dữ liệ ớu l n và ph c t p mà không th giứ ạ ể ải được b ng các công thằ ức đơn giản Do vậy, vi c nghiên c u ngôn ngệ ứ ữ Python để cài đặt cho các phương pháp trong h c ph n Gi i tích s là r t c n thi t Các k t qu cọ ầ ả ố ấ ầ ế ế ả ủa đề tài có th làm tài li u ể ệtham kh o cho gi ng viên và sinh viên ngành khoa h c dả ả ọ ữ liệu Nó giúp cho người đọc hiểu sâu hơn về các phương pháp giải số cũng như rèn luyện được kỹ năng lập trình

Trang 13

Chương 1 Giới thiệu về ngôn ngữ lập trình Python

1.1 T ng quan v ngôn ng l p trình Python ổềữ ậ

1.1.1. Giới thiệu v ngôn ng l p trình Python ềữ ậ

Python là m t ngôn ng lộ ữ ập trình hướng đối tượng được phát tri n vào cu i nh ng ể ố ữnăm 1980 (tên Python có nguồn gốc từ loạt phim truyền hình của Anh, MontyPython’s Flying Circus) [5] M c dù Python không n i ti ng trong gi i kặ ổ ế ớ ỹ thuật cũng như mộ ốt s ngôn ngữ khác, nhưng nó có một lượng người theo dõi đáng kể trong cộng đồng l p ậtrình Python có thể được xem như một ngôn ng m i n i, vì nó vữ ớ ổ ẫn đang được phát triển và hoàn thi n Hi n t i, nó là m t ngôn ngệ ệ ạ ộ ữ tuyệt vời để phát tri n các ng d ng ể ứ ụk ỹ thuật

Các chương trình Python không được biên dịch thành mã máy mà được chạy bởi trình thông dịch Ưu điểm lớn c a ngôn ng thông dủ ữ ịch là các chương trình có thể được ki m tra và g lể ỡ ỗi nhanh chóng, cho phép người dùng t p trung nhiậ ều hơn vào các thuật toán của chương trình và ít tập trung hơn vào bản thân chương trình Vì không cần biên d ch, liên k t và th c thi sau m i l n sị ế ự ỗ ầ ửa, các chương trình Python có thể được phát triển trong th i gian ngờ ắn hơn nhiều so với các chương trình Fortran hoặc C tương đương Về nhược điểm, các chương trình thông dịch không tạo ra các ứng dụng độc lập Do đó, một chương trình Python chỉ có thể chạy trên các máy tính đã cài đặt trình thông dịch Python

Trong môi trường học tập, Python có những ưu điểm so với một số ngôn ngữ lập trình khác là:

- Python là một phần mềm mã nguồn mở, có nghĩa là nó miễn phí

- Python có s n cho t t c các hẵ ấ ả ệ điều hành chính (Linux, Unix, Windows, Mac OS ) Một chương trình được vi t trên m t hế ộ ệ điều hành này ch y mà không ạcần sửa đổi trên tất cả các hệ điều hành khác

- Python dễ học hơn và dễ đọc code hơn hầu h t các ngôn ng ế ữ- Python và các phần m r ng c a nó rở ộ ủ ất dễ cài đặt 1.1.2. Cài đặt Python

Trình thông d ch ị Python có thể được t i ả xu ng ố t ừhttps://www.python.org/downloads/ Tuy nhiên để thuận tiện cho việc cài đặt môi trường sử d ng cho cho ngôn ngữ Python sử d ng b công c Anaconda là lựa ch n ụ ụ ộ ụ ọthích h p nh t Ngoài vi c cung c p s n các ph n m m biên d ch và hợ ấ ệ ấ ẵ ầ ề ị ỗ trợ ngườ ậi l p trình trong quá trình l p trình Python, viậ ệc cài đặt các thư viện ngoài khi s d ng ử ụAnaconda trở nên đơn giản hơn rất nhiều

Anaconda được tải xuống từ https://www.anaconda.com/

Trang 14

1.2. Giới thi u v Python lõi ệề

1.2.1. Một số kiểu dữ liệ u trong Python lõi

Tương tự như các loại ngôn ngữ lập trình bậc cao khác, khi khai báo một biến bất kì trong Python, ki u d u cể ữ liệ ủa nó sẽ được tự động định d ng ạ

Chia lấy dư % print(4 % 3) # 1

Chia lấy nguyên // print(8 // 5) # 1

Số mũ ** print(8 ** 5) # 32768

B ng 1 2 Danh sách các phép toán s hảố ọc cơ bản trong Python

Các toán tử gán:

Trang 15

Tương tự với vòng lặp xác định, break và continue cũng có công dụng tác động vào vòng l p ặ

- Break: dùng để dừng toàn bộ quá trình chạy vòng lặp

- Continue: dùng để dừng vòng lặp hiện tại và chuyển sang vòng lặp tiếp theo Vòng lặp không xác định cũng sử dụng else tương tự như vòng lặp xác định Else sẽ được thực thi nếu như vòng lặp hoàn tất được chu trình lặp trong suốt chuỗi lặp Tuy nhiên nếu vòng lặp bị dừng giữa chừng bằng break, các câu lệnh trong else sẽ không được tiến hành

Trang 16

#('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')

str = 'abcdefgh'

print(set(str))

#{'d', 'g', 'e', 'h', 'f', 'c', 'a', 'b'}

list() Chuyển đổi thành list

str = 'abcdefgh'

print(list(str))

#['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

dict() Chuyển đổi tuple thành từ điển

tup = (( , ) ,('a'1'f', ), ('g', )) print(dict(tup))

#{'a': 1, 'f': 2, 'g': 3}

string() Chuyển đổi thành kiểu chuỗi

tup = (( , ) ,('a'1'f', ), ('g', )) print(str(tup))

#(('a', 1), ('f', 2), ('g', 3))

complex() Chuyển đổi số thực thành số phức

print(complex( ,1 2))

ASCII tương đương

Trang 17

Tập tin là m t t p h p liên tộ ậ ợ ục các Byte được s dử ụng để lưu trữ ữ liệu Dữ liệu dnày được tổ chức theo một định dạng cụ thể và có thể lưu trữ bất cứ th gì, từ tứ ệp văn bản đơn giản đến các chương trình thực thi ph c tứ ạp Khi máy tính x ử lý, các tệp này s ẽđược biên d ch sang dạng nh ị ịphân 0 và 1 đểđọc ghi và thực thi các chương trình

- Folder path: Vị trí thư mục trên hệ thống, các thư mục nhỏ được tách nhau bởi d u g ch chéo (/) ấ ạ

- File name: Tên của tệp tin

- Extension: Cuối đường d n ch ẫ ỉ định định d ng cạ ủa tập tin (.txt, csv, pdf, ) Ví dụ:

Đóng mở tệp tin b ng Python: ằ

Khi làm vi c v i t p tin, việ ớ ệ ệc đầu tiên là m tở ệp tin đó Python sẽ ử ụ s d ng hàm open() nh n vào mậ ột đối số là chuỗi ký tự đường d n cẫ ủa tệp tin

file = open('E:\PythonTeachingLab\test.txt')

Việc quan tr ng b t bu c ph i nh sau khi m m t tọ ắ ộ ả ớ ở ộ ệp tin là đóng tệp tin đó lại Trong nhiều trường h p, khi h y b m t câu l nh hay mợ ủ ỏ ộ ệ ột chương trình, tệp tin s t ẽ ựđộng đóng lại, tuy nhiên chúng ta không xác định chắc chắn được điều này sẽ xảy ra Do vậy để đảm b o an toàn, không xả ảy ra các trường h p ngoài ý mu n, chúng ta phợ ố ải chắc chắn tệp tin sẽ được đóng lại bằng khối lệnh try-finally

reader = open('E:\PythonTeachingLab\test.txt')

try:

# kh i l nh xố ệử lýfinally: reader.close()

Một cách khác để đả m b o tả ệp tin được đóng hoàn toàn là sử ụ d ng câu l nh with: ệwith open('E:\PythonTeachingLab\test.txt') as reader:

# kh i l nh xố ệử lý

Trang 18

With s tẽ ự động đóng tập tin đang sử ụng khi chương trình thoát khỏ d i kh i l nh ố ệx ử lý có trong nó

Ngoài ra có th s d ng thêm mể ử ụ ột đố ố thứ hai đểi s quyết định cách tệp tin được m (mode): ở

with open('E:\PythonTeachingLab\test.txt','r') as reader: # kh i l nh xố ệử lý

Có nhiều l a ch n khác nhau cho mode khi m mự ọ ở ột tệp tin: - ‘r’: mở để đọc tệp tin (mặc định)

- ‘w’: mở ghi t p tin (t p s b để ệ ệ ẽ ị ghi đè)

- ‘rb’ hoặc ‘wb’: mở dưới dạng nhị phân (đọc và ghi dướ ạng byte) i d

Đọc và ghi tệp tin b ng Python: ằ

Có ba phương pháp đọc nội dung tệp tin có thể dùng trên Python:

- read(size=-1): nếu không có đối s truy n vào ho c truy n vào -1, t p tin s ố ề ặ ề ệ ẽđược đ c toàn bộ ọ

- readline(size=-1): đọc t ng dòng v i sừ ớ ố lượng ký tự là đối số truyền vào Nó đọc hết dòng r i quay tr lồ ở ại ban đầu Nếu không có đối số truyền vào hoặc truyền vào là -1 thì c dòng s ả ẽ được đọc.

- readlines(): đọc tất cả các dòng chưa đọc trong tệp tin rồi g i vử ề dưới dạng list Có 2 phương pháp để ghi t p tin b ng Python: ệ ằ

- write(): ghi m t chu i ký t vào t p tin ộ ỗ ự ệ

- writelines(): ghi các chu i ký t vào tỗ ự ệp tin, người dùng ph i t thêm các ký ả ựhi u k t thúc vào cu i mệ ế ố ỗi chuỗi

1.2.2.10 Xử lý ngoạ ệi l :

Khi m t l i x y ra trong quá trình th c hi n mộ ỗ ả ự ệ ột chương trình, một ngo i l s ạ ệ ẽđược đưa ra và chương trình sẽ dừng lại Có thể bắt gặp các trường hợp ngoại lệ bằng các câu lệnh try và except:

Trang 19

<Kh i lố ệnh thực thi>

- try: khối lệnh cho phép thực thi thử- except: khối lệnh giúp x ửlý khi lỗi xảy ra - else: khối lệnh th c thi khi không x y ra l i ự ả ỗ

- finally: khối lệnh th c thi sau khi quá trình ch y th hoàn t t ự ạ ử ấ

ERROR là tên c a m t ngo i l Python tích h p s n (built-in Python exception) ủ ộ ạ ệ ợ ẵNếu error ngo i l không g p, kh i các l nh trong khạ ệ ặ ố ệ ối try được thực thi, ngượ ạc l i các l nh trong khệ ối EXCEPT được th c thi T t c các ngo i l có thự ấ ả ạ ệ ể được phát hi n b ng ệ ằcách bỏ qua ERROR khỏi câu lệnh EXCEPT

1.2.3. Hàm và thư viện 1.2.3.1 Hàm (Function)

Hàm là một khối lệnh chỉ được thực thi khi gọi đến nó Người dùng có thể truyền dữ liệu vào hàm thông qua các tham số và hàm cũng có thể trả về các kết quả mà nó xử lý thành công

Khai báo một hàm sử dụng def: def <Tên hàm>(<tham số>): <Kh i lố ệnh thực thi>

Để thực thi hàm, ta cần gọi đúng tên của hàm đã được khai báo Ví dụ 1:

def my_function(): print("Đây là hàm") my_function()

Truyền dữ liệu vào hàm thông qua tham số Ví dụ 2:

def my_function(ho, ten): print(ho + " " + ten) my_function("Smith", "John")Hàm với tham số mặc địnhVí dụ 3:

def my_function(ho ="Smith", ten = "John"): print(ho + " " + ten)

my_function()

Trang 20

1.2.3.2 Hàm Lambda

Trong Python, hàm vô danh là hàm được định nghĩa mà không có tên Nếu các hàm bình thường được định nghĩa bằng cách sử dụng từ khóa def, thì hàm vô danh được định nghĩa bằng cách sử dụng từ khóa lambda Vì lý do đó mà hàm vô danh còn được g i là hàm Lambda ọ

lambda <tham số>: <l nh th c thi> ệự

Hàm Lambda có th có nhi u tham sể ề ố nhưng chỉ có 1 bi u th c Bi u th c sể ứ ể ứ ẽ được đánh giá và trả về Hàm Lambda có thể được sử dụng ở bất cứ nơi nào đối tượng hàm được yêu cầu

1.2.3.3 Thư viện

Thư viện trong Python là tập hợp các module được viết sẵn để giúp cho việc lập trình Python tr nên dở ễ dàng hơn và nhanh chóng hơn Các thư viện này cung c p các ấhàm, lớp và phương thức được định nghĩa sẵn để thực hi n các tác v cệ ụ ụ thể ừ đó , tgiảm thiểu th i gian và công sờ ức cần thiế ểt đ phát tri n mể ột ứng d ng ụ

Python có nhiều thư viện ph biổ ến như NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow, Django, Flask, và nhiều thư viện khác n a Mữ ỗi thư viện có các tính năng, chức năng và ứng dụng khác nhau, phục vụ cho các mục đích khác nhau của lập trình viên

1.2.4. Một số thư viện toán h c

1.2.4.1 Thư viện Math

Một số phép toán phức tạp như cos, sin, tan, cotan hay logarit, cần phải sử dụng thư viện Math để tiến hành

Để sử dụng các hàm của thư viện, ta khai báo thư viện Math trước khi tiến hành lập trình:

gần nhất math.floor(1.001) # returns 1 math.factorial() Trả về giai thừa của một số math.factorial(10) # returns

3628800

Trang 21

math.gcd() Trả về ước chung lớn nhất của

hai số nguyên math.gcd( ,10 125) # returns 5 math.trunc() Trả về phần nguyên của một

Trang 22

Các hàm lũy thừa và logarit:

inf Trả về một dấu phẩy động vô cực dương

nan Trả về giá trị NaN dấu phẩy động (Không phải là Số) pi Trả về Pi (3.1415 )

Trang 23

1.2.5.1 Giới thiệu về Numpy

Numpy là một thư viện lõi ph c v cho khoa h c máy tính c a Python, hụ ụ ọ ủ ỗ trợ cho vi c tính toán các m ng nhi u chiệ ả ề ều, có kích thướ ớc l n với các hàm đã đượ ối ưu áp c td ng lên các m ng nhi u chiụ ả ề ều đó Numpy đặc bi t h u ích khi th c hi n các hàm liên ệ ữ ự ệquan tới Đại Số Tuy n Tính ế

Thực hiện cài đặt numpy bằng anaconda, trên terminal chỉ cần gõ lệnh:

conda install numpy

Để sử dụng các hàm của thư viện, ta khai báo thư viện Numpy trước khi tiến hành lập trình:

import numpy as np 1.2.5.2 T o m t m ng ạ ộ ả

Numpy được sử dụng để làm việc với mảng, nó có thể tạo mảng với nhiều chiều Mảng được tạo bởi Numpy có định dạng là ndarray

Khai báo mảng 0 chiều: arr = np.array(42 , dtype = int) Khai báo mảng 1 chiều:

arr = np.array([ , 1 2 3 4 5, , , ] , dtype = int) Khai bảo mảng 2 chiều:

arr = np.array([[1, ], [45 6, ]] , dtype = int) Khai báo mảng 3 chiều:

arr2 = np.array(([(2 0 6,4, , ), ( , ,4 75,6)], [(0 2 1,3, , ), ( , ,9 45,6)], [(5 6 4,8, , ), ( , ,1 46,8)]), dtype = int)

Ngoài ra có thể khởi tạo mảng với một số hàm có sẵn

- np.zeros((3,4), dtype = int): Tạo mảng hai chiều các phần tử 0 với kích thước 3x4

- np.ones((2,3,4), dtype = int): Tạo mảng 3 chiều các phần tử 1 với kích thước 2x3x4

- np.arange(1,7,2): Tạo mảng với các phần tử từ 1 6 với bước nhảy là 2.- - np.full((2,3),5): Tạo mảng 2 chiều các phần tử 5 với kích thước 2x3 - np.eye(4, dtype=int): Tạo ma trận đơn vị với kích thước là 4x4

Trang 24

- np.random.random((2,3)): Tạo ma trận các phần tử ngẫu nhiên với kích thước 2x3

Khi một mảng được khai báo, nó sẽ đi kèm với các giá trị: - dtype: Kiểu dữ liệu của phần tử trong mảng

- shape: Kích thước của mảng - size: Số phần tử trong mảng - ndim: Số chiều của mảng

1.2.5.3 Truy cập và thay đổi ph n t trong m ng ầ ử ả

Các phần tử trong mảng được đánh số ừ t 0 trở đi, để truy cập đến các phần t ử đó ta s d ng: ử ụ

- arr[i]: Truy cập tới phần tử thứ i của mảng 1 chiều - arr1[i,j]: Truy cập tới phần tử hàng i, cột j của mảng 2 chiều - arr2[n,i,j]: Truy cập tới phần tử chiều n, hàng i, cột j của mảng 3 chiều - arr[a:b]: Truy cập tới các phần tử từ a đến b 1 trong mảng 1 chiều -

- arr1[:,:i]: Truy cập tới phần tử từ cột 0 đến cột i 1, của tất cả các hàng trong mảng 2 chiều

Lấy giá trị lớn nhất của mảng arr

arr = np.array([ , 1 3 4 5 6, , , ], dtype=int)

print("Giá trị lớn nhất của mảng arr là:", np.max(arr))

#Giá trị lớn nhất của mảng arr là: 6

arr.min() hoặc np.min(arr)

Lấy giá trị nhỏ nhất của mảng arr

arr = np.array([ , 1 3 4 5 6, , , ], dtype=int)

print("Giá trị nhỏ nhất của mảng arr là:", np.min(arr))

#Giá trị nhỏ nhất của mảng arr là: 1

arr.sum() hoặc np.sum(arr)

Tổng tất cả các phần tử trong mảng arr

arr = np.array([ , 1 3 4 5 6, , , ], dtype=int)

print("Tổng tất cả các phần tử của mảng arr là:", np.sum(arr))

#Tổng tất cả các phần tử của mảng arr

Trang 25

là: 19

arr.mean() hoặc np.mean(arr)

Trung bình cộng của tất cả các phần tử trong mảng arr

arr = np.array([ , 1 3 4 5 6, , , ], dtype=int)

print("Trung bình cộng tất cả các phần tử của mảng arr là:", np.mean(arr))

#Trung bình cộng tất cả các phần tử của mảng arr là: 3.8

np.median(arr) Trả về giá trị trung vị của mảng arr

arr = np.array([1 3 4 5 6, , , , ], dtype=int)

print("Giá trị trung vị của mảng arr là:", np.median(arr))

#Giá trị trung vị của mảng arr là: 4.0

B ng 1 13 Danh sách các hàm th ng kê sảốử d ng trong NumpyụMột số phép toán với mảng

Trang 26

* Nhân một số với mảng

a = np.array([ , ,2 1 3,4,5], dtype = int) print(a*3)

print(arr/a)

#[0.5 3 1.33333333 1.25 1.2 ]

np.linalg.matrix_rank(arr)

Tính hạng của ma trận

print(np.linalg.matrix_rank(a))

B ng 1 14 Danh sách các phép toán v i m ng s d ng trong Numpyảớảử ụ1.2.6. Vẽ đồ thị ớ v i Matplotlib

1.2.6.1 Giới thiệu về Matplotlib

Như chúng ta đã biế Python đượt c sử dụng nhiều nhất trong lĩnh vực phân tích dữ liệu, mà trong khoa h c dọ ữ ệu, vi c trli ệ ực quan hóa thông qua các đồ ị, bith ểu đồ giúp cho chúng ta hiểu được các m i quan h trong dố ệ ữ liệu dễ dàng hơn rất nhi u ềMatplotlib là một thư viện sử dụng để vẽ các đồ thị trong Python, chính vì v y nó là ậthư viện cực phổ biến của Python

Khai báo thư viện Matplotlib: import matplotlib.pyplot asplt

Trang 27

1.2.6.2 Phân cấp đối tượng trong Matplotlib

Phân cấp ở đây nghĩa là kiểu cấu trúc cây các đối tượng Matplotlib tr v t plot() ả ề ừĐối tượng Figure là nơi chứa đồ họa Matplotlib, nó có thể chứa các đối tượng Axes Dưới Axes là hệ thống phân cấp các đối tượng nhỏ hơn như các đường thẳng, các textbox Hầu h t các ph n t cế ầ ử ủa đồ thị đều có thể tương tác như đối tượng trong Python

plt.plot([1, , ])fig, _ = plt.subplots()

Trong đoạn code trên, hai biến được tạo ra với plt.subplots(), biến đầu tiên là fig chứa Figure, biến th hai _ ch a nh ng thứ ứ ữ ứ khác Đây là cấu trúc Tuple trong Python do plt.subplots() cũng trả về kiểu Tuple Do c u trúc phân c p hình cây, n u ấ ấ ế muốn truy xuất đến ph n t ầ ử đánh dấu ch ng h n: ẳ ạ

one_tick = fig.axes[0].yaxis.get_major_ticks()[0]

Biến fig là instance c a l p Figure ch a bên trong nhiủ ớ ứ ều các đối tượng Axes Mỗi Axes có m t yaxis và xaxis và chúng l i ch a m t t p các major_sticks và chúng ta l y ộ ạ ứ ộ ậ ấcái đầu tiên

Phương thức plot() có 3 tham số plot(x, y, format): - Tham số x là danh sách các tọa độ trục x - Tham số y là danh sách các tọa độ trục y - format định dạng đồ thị

plt.plot([ ,0 1,2 3 4, ,],[ , , ,1 2 3 4,10], 'go-')

Ngoài ra còn có một số nh dđị ạng khác như sau:

- 'r* ' các điểm hình ngôi sao màu đỏ, đường nối các điểm dạng

- 'bD -.' các điểm hình kim cương màu xanh dương, đường nối các điểm dạng - - 'g^-' các điểm hình tam giác hướng lên màu xanh lá, đường nối các điểm dạng - Nếu không muốn các điểm nố ới v i nhau, có th b nh dể ỏ đị ạng đường thẳng đi, ví dụ 'go-' s thành 'go'ẽ

Trang 28

Chương 2 Sử dụng Python cài đặt các thuật toán trong học phần Giải tích số

2.1. Giới thi u v ệề giải tích s

Giải tích s là m t nhánh c a toán h c giúp gi i các bài toán mà không thố ộ ủ ọ ả ể tìm đượ ờc l i giải chính xác bằng các công c toán hụ ọc thông thường Giải tích s dựa trên ốvi c x p xệ ấ ỉ các đại lượng liên t c bụ ằng các đại lượng r i r c và s d ng các thu t toán ờ ạ ử ụ ậđể tính toán các kết quả gần đúng Giải tích số có nhiều ứng dụng trong các lĩnh vực như khoa học máy tính, kỹ thuật, vật lý, hóa học, sinh học, tài chính, v.v Gi i tích s ả ốbao g m nhi u chồ ề ủ đề khác nhau, như phương pháp tìm nghiệm của phương trình, phương pháp giải hệ phương trình tuyến tính và phi tuyến, phương pháp nội suy và ngoại suy, phương pháp tích phân và vi phân số, phương pháp giải phương trình vi phân thường và vi phân riêng biệt, v.v Mỗi phương pháp đều có những ưu và nhược điểm riêng, cũng như những điều kiện áp dụng khác nhau Để sử dụng hiệu quả các phương pháp tính, người ta cần biết cách lựa chọn và thiết kế các thuật toán thích hợp cho t ng bài toán cừ ụ thể Ngoài ra, người ta cũng cần đánh giá được sai số và độ ổn định c a các kết quả gủ ần đúng Giải tích số là một lĩnh vực đang phát triển liên tục và có nhi u thách th c m i Nó yêu cề ứ ớ ầu người h c có ki n th c n n t ng v ng ch c v ọ ế ứ ề ả ữ ắ ềgiải tích, đạ ố tuyếi s n tính và l p trình Gi i tích s là m t công c quan tr ng và hậ ả ố ộ ụ ọ ữu ích cho vi c mô hình hóa và gi i quy t các bài toán th c t trong nhi u ngành khoa hệ ả ế ự ế ề ọc k ỹ thuật

Giải tích s có vai trò quan tr ng trong khoa h c dố ọ ọ ữ liệu, vì nó giúp x lý và phân ửtích các dữ liệ ớu l n và ph c t p mà không th giứ ạ ể ải được b ng các công thằ ức đơn giản Giải tích số cũng giúp tạo ra các mô hình và d báo t các dự ừ ữ liệu, cũng như kiểm tra và đánh giá các giả thuyết khoa học Một số ứng dụng của giải tích số trong khoa học d u là ữ liệ

▪ Trong máy h c, gi i tích s giúp tọ ả ố ối ưu hóa các hàm mất mát, hu n luy n các ấ ệmô hình như mạng nơ-ron, phân loại và phân cụm dữ liệu, v.v.;

▪ Trong th ng kê, gi i tích số ả ố giúp ước lượng các tham s , kiố ểm định các gi ảthuyết, tính toán các xác su t và kho ng tin c y, v.v.; ấ ả ậ

▪ Trong trí tu nhân t o, gi i tích s giúp gi i quy t các bài toán tìm ki m, l p k ệ ạ ả ố ả ế ế ậ ếhoạch, suy luận logic, học tăng cường, v.v

Nội dung c a h c ph n Gi i tích sủ ọ ầ ả ố trong chương trình đào tạo đạ ọi h c ngành Khoa h c dọ ữ liệu tại trường Đại h c Kinh t -Kọ ế ỹ thuật Công nghi p gệ ồm có sáu chương Chương 1 giới thiệu tổng quan về sai số, cách viết xấp xỉ cũng như sai số phát sinh trong quá trình tính toán Năm chương còn lại đề ập đến 5 lĩnh vự c c cụ thể trong toán

Trang 29

h c tính toán Mọ ục đích của chương này sẽ ử ụ s d ng ngôn ng lữ ập trình Python cài đặt các thuật toán trong các chương 2, 3, 4, 5, 6 của học phần Giải tích s Vi c này s giúp ố ệ ẽcác em sinh viên có th rèn luy n kể ệ ỹ năng lập trình cũng như hiểu các thu t toán này ậmột cách sâu sắc hơn.

2.2 S dử ụng Python cài đặt các thuật toán trong chương 2 của h c phọần

Giải tích số: Giả ần đúng nghiệi g m th c cựủa phương trình

Chương 2 học phần Giải tích số đề cập đến việc xấp xỉ nghiệm thực cho phương trình, đây là cơ sở để giải quyết nhiều bài toán trong kinh tế và kỹ thuật Hầu hết các phương trình đều không có công thức giải tích để tính nghiệm đúng Hơn nữa, ngay cả khi một vài phương trình có công thức tính nghiệm đúng thì quá trình tính toán các công th c này s phát sinh sai s do quy tròn ho c do tính toán nên k t quứ ẽ ố ặ ế ả cuối cùng s là giá tr gẽ ị ần đúng của nghi m Do v y, vi c xây d ng thuệ ậ ệ ự ật toán để tính nghi m gệ ần đúng cho mỗi phương trình là rất cần thiết

Các phương pháp xấp xỉ nghiệm cho phương trình được chia làm 2 lớp là các phương pháp khoảng và các phương pháp mở Nếu đã biết một khoảng chứa nghiệm của phương trình thì các phương pháp khoảng sẽ tìm được khoảng con đủ nhỏ chứa nghiệm Các phương pháp khoảng được gi i thiớ ệu trong chương trình Giải tích số là phương pháp Tìm kiếm gia tăng và phương pháp Chia đôi Các phương pháp khoảng có ưu điểm đơn giản nhưng độ chính các và tính ổn định không cao Do vậy, các phương pháp khoảng thường được sử dụng để ải sơ bộ gi cho bài toán tìm nghiệm xấp xỉ cho phương trình để tìm khoảng đủ nh mà hàm sỏ ố thoả mãn m t vài tính ch t c n ộ ấ ầthiết Khi đó, các phương mở sẽ ếp t c th c hi n ph n vi c còn lti ụ ự ệ ầ ệ ại Các phương pháp mở là nhóm các phương pháp tận dụng dáng điệu của đường cong để đưa ra công thức l p x p x nghi m cho h p lý Do v y, n u so vặ ấ ỉ ệ ợ ậ ế ới các phương pháp khoảng thì các phương pháp mở có độ chính xác cao hơn Ba phương pháp mở được giới thiệu trong chương trình là phương pháp Dây cung, phương pháp Tiếp tuyến và phương pháp Lặp đơn

2.2.1 S d ử ụng Python để cài đặt cho phương pháp tìm kiếm gia tăng

Xét phương trình

𝑓(𝑥) = 0, 𝑥 ∈ 𝑎, 𝑏 [ ]

Giả sử ta biết phương trình có nghiệm 𝛼 ∈ [𝑎, 𝑏] nhưng độ dài đoạ [𝑎, 𝑏] chưa đủ n nhỏ Phương pháp Tìm kiếm gia tăng sẽ giúp tìm một đoạn con có chiều dài đủ nhỏ Δ𝑥của [𝑎, 𝑏] chứa nghiệm của phương trình Các bước được thực hiện như sau:

Phương pháp Tìm kiếm gia tăng

Trang 30

Input: 𝑓(𝑥), 𝑎, 𝑏, Δ𝑥 Output: [𝑥1, 𝑥 ] 2 chứa nghiệm.Khởi tạo 𝑥1≔ 𝑎

Bước 1 Tính 𝑥 ≔ 𝑥2 1+ Δ𝑥 Bước 2

1 Nếu 𝑥 > 𝑏2 Thuật toán dừng (vì kho ng tìm kiếm vượt ra ngoài [𝑎, 𝑏]) ả2 Nếu 𝑥 ≤ 𝑏2 Tính 𝑓(𝑥1)𝑓(𝑥 ) 2

a Nếu 𝑓(𝑥1) (𝑓 𝑥2) ≤ 0thì dừng thu t toán Kậ ết luận 𝛼 ∈ [𝑥1, 𝑥2] b Nế 𝑓(𝑥u 1) (𝑓 𝑥2) > 0 thì 𝑥1 ≔ 𝑥2và quay lại Bước 1

Hàm trong chương trình sau thực hiện tìm khoảng [𝑥 , 𝑥1 2] với các tham số đầu vào là hàm 𝑓(𝑥), cận dưới, c n trên ậ 𝑎, 𝑏 và s gia ố 𝑑𝑥

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

## module rootsearch

''' x1,x2 = rootsearch(f,a,b,dx).

Searches the interval (a,b) in increments dx for the bounds (x1,x2) of the smallest root of f(x) Returns x1 = x2 = None if no roots were detected.'''

from numpy import sign def rootsearch(f,a,b,dx): x1 a; f1 f(a)== x2 a dx; f2 f(x2)= += while sign(f1) == sign(f2): x1 if>= b: return None None, x1 x2; f1 f2== x2 x1 dx; f2 f(x2)=+= else:

def (x): freturn x**3 - 10.0* **2 + x 5.0x1,x2 =rootsearch(f,0.0 100.0 0.2) ,,print('Khoang chua nghiem =[',x1,',',x2,']') Kết quả là:

Khoang chua nghiem =[ 0.6 , 0.8 ]

Trang 31

Phương pháp tìm kiếm gia tăng có ưu điểm đơn giản nhưng độ chính xác thấp vì có sai số không quá Δ𝑥 Nếu Δ𝑥lớn thì sai số sẽ lớn và có thể bỏ sót nghiệm Ngược lại,nếu Δ𝑥 nhỏ thìquá trình tìm kiếm sẽ tốn nhiều thời gian Phương pháp Chia đôi được trình bày sau đây sẽ có độ chính xác và hiệu quả cao hơn

2.2.2 S d ử ụng Python để cài đặt cho phương pháp chia đôi

Xét phương trình

𝑓(𝑥) = 0, 𝑥 ∈ 𝑎, 𝑏[ ]

Giả sử phương trình có nghi m ệ 𝛼 ∈ [𝑎, 𝑏] nhưng độ dài đoạ [𝑎, 𝑏] chưa đủn nhỏ Phương pháp chia đôi sẽ giúp tìm khoảng con của [𝑎, 𝑏] có chứa nghiệm bằng cách lặp l i viạ ệc chia đôi liên tiếp kho ng ch a nghiả ứ ệm đã biết Sau m i l n lỗ ầ ặp, độ dài của kho ng ch a nghi m s giả ứ ệ ẽ ảm đi một n a Quá trình l p s d ng lử ặ ẽ ừ ại đến khi tìm được đoạn con đủ nhỏ Thường thì quá trình lặp sẽ dừng sau khi tìm được khoảng con có độdài nhỏ hơn sai số cho trước (ký hi u ệ 𝜀, hoặc tol) Quá trình tính toán cụ thể được minh hoạ bằng thuật toán sau

Phương pháp chia đôi Input: 𝑓(𝑥), 𝑎, 𝑏, 𝑡𝑜𝑙

Output: Nghiệm xấp xỉ (𝑥1+ 𝑥2)/2 Khởi tạo: 𝑥1= 𝑎; 𝑥 = 𝑏 2Bước 1 Tính 𝑥 = (𝑥31+ 𝑥2)/2 Bước 2 Tính 𝑓(𝑥1)𝑓(𝑥3)

1 N u ế 𝑓(𝑥1) (𝑓 𝑥3) ≤ 0 𝑥: 2≔ 𝑥3 2 Ngược lại: 𝑥 ≔ 𝑥13 Bước 3 Tính 𝐸𝑟𝑟 = 𝑥 − 𝑥21

1 N u ế 𝐸𝑟𝑟 ≤ 𝑡𝑜𝑙: Dừng thuật toán Kết luận nghiệm xấp xỉ (𝑥1+ 𝑥2)/2 2 Ngược lại: Quay lại Bước 1

Hàm bisection(f,x1,x2,switch=0,tol=1.0e-9)cho nghi m x p x ệ ấ ỉ

bằng phương pháp chia đôi với 𝑓, 𝑥1, 𝑥2 là hàm và các tham số cho trước Sai số tol mặc định là 10−9 Switch = 1 nếu không tìm được nghiệm

Chương trình Python: 1

2 3 4 5 6 7

## module bisection

''' root = bisection(f,x1,x2,switch=0,tol=1.0e-9) Finds a root of f(x) = 0 by bisection The root must be bracketed in (x1,x2) Setting switch = 1 returns root = None if f(x) increases upon bisection.'''

Trang 32

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

import math import error from numpy import sign

def bisection(f,x1,x2,switch ,tol=1=1.0e-9): f1 f(x1)=

f1 if== 0.0: return x1 f2 f(x2)= f2 if== 0.0: return x2 sign(f1) if== sign(f2): error.err('Root is not bracketed')

n =int(math ceil(math log( abs(x2 x1) tol) math log(-//.2.0))) for i inrange(n):

x3 = 0.5*(x1 x2); f3 +=f(x3) (switch if== 1 ) and (abs(f3) >abs(f1)) \ and (abs(f3) >abs(f2)):

return None f3 if== 0.0: return x3

ifsign(f2)!= sign(f3): x1 x3; f1 f3== else: x2 x3; f2 f3==

return (x1 x2)+/2.0

Do m i l n lỗ ầ ặp độ dài đoạn ch a nghi m sứ ệ ẽ giảm m t n a nên sau ộ ử 𝑛 lần lặp thì độ dài đoạn chứa nghiệm sẽ giảm 2𝑛 lần so với độ dài đoạn [𝑎, 𝑏] ban đầu Do đó, ta có sai số tuyệt đối của phương pháp được tính bởi

|𝑥2− 𝑥1| ≤𝑏 − 𝑎2𝑛

Phương pháp ây cung có độ chính xác thấp nhưng rất ổn định và thực hiện tính Dtoán mà không yêu cầu điều kiện về hàm số Do vậy, phương pháp chia đôi thường được áp dụng để xấp xỉ nghiệm khi ta chưa có nhiều thông tin về dáng điệu của hàm số hoặc thực hiện bước giải sơ bộ Tức là tìm khoảng con đủ nhỏ để hàm số thoả mãn một số điều kiện mà các phương pháp chính xác cao yêu cầu

2.2.3 S d ử ụng Python để cài đặt cho phương pháp dây cung

Để có được công thức xấp x nghiệm có độ chính xác cao, các phương pháp phải ỉt n dậ ụng dáng điệu c a hàm ủ 𝑓(𝑥) để đưa ra công thức lặp cho phù hợp Các phương pháp này được gọi là các phương pháp mở Chương trình Giải tích số giới thiệu ba phương pháp mở là phương pháp dây cung, phương pháp tiếp tuyến và phương pháp

Trang 33

lặp đơn Trong ba phương pháp này, phương pháp dây cung và phương pháp tiếp tuyến sẽ hội tụ nếu phương trình thoả mãn hai giả thiết sau:

(𝑔𝑡1 :) T n t i nghiồ ạ ệm 𝛼 ∈[𝑎, 𝑏]; (𝑔𝑡2 :) 𝑓′, 𝑓′′ không đổi dấu trên [𝑎, 𝑏]

Các giả thiết (gt1) và (gt2) là các điều kiện tương đối chặt cho mỗi bài toán trong thực tế Để giải quyết vấn đề này, các phương pháp khoảng được sử dụng kết hợp với các phương pháp mở Quá trình giải thường sẽ được chia thành hai giai đoạn liên tiếp Giai đoạn đầu thực hiện giải sơ bộ bằng các phương pháp khoảng để tìm được khoảng chứa nghiệm đủ nhỏ mà các (gt1) và (gt2) thỏa mãn Giai đoạn tiếp theo sẽ sử dụng các phương pháp mở để xấp xỉ nghiệm cho phương trình với độ chính xác cao Mục này sẽ trình bày phương pháp dây cung xấp xỉ nghiệm cho phương trình cũng như chương trình Python cài đặt cho thuật toán

Giả sử phương trình thoả mãn (gt1) và (gt2) với 𝑓′(𝑥) > 0, 𝑓′′( ) > 0, ∀𝑥 ∈ [𝑎, 𝑏] 𝑥(minh hoạ như Hình 2.1) Ta th y nghiấ ệm 𝛼 ủa phương trình là giao củ c a cung AB với Ox Ý tưởng của phương pháp dây cung là nghiệm đúng , là giao của dây cung Ab, sẽ 𝛼được xấp xỉ bởi 𝑥1 là giao của dây cung AB Do dây cung AB là đường thẳng là đa thức bậc nhất nên việc tìm 𝑥1 s dẽ ễ hơn rất nhi u so v i vi c tìm ề ớ ệ 𝛼 Cụ thể, với 𝑥0= 𝑎 ta có

Hình 2 1 Hình minh họa phương pháp dây cung

Trang 34

“phía trong” cung AB, do vậy nếu hàm số lõm (𝑓′′(𝑥) > 0) thì điểm cố định phả ằi n m bên trên 𝑂𝑥 và ngược l i Tạ ừ đó suy ra tung độ ủa điể c m cố định và 𝑓 (𝑥)′′ phải cùng d u, t c là ấ ứ 𝑓(𝑥𝐹𝑖𝑥)𝑓′′(𝑥𝐹𝑖𝑥)> 0 Ta sẽ kiểm tra điều kiện này để chọn 𝑥𝐹𝑖𝑥 m t trong ộhai số 𝑎, 𝑏 Số còn lại sẽ gán cho giá trị ban đầu Thuật toán tìm dây cung cụ thể như 𝑥0sau

Phương pháp dây cung Input: 𝑓(𝑥), 𝑓′(𝑥) ′′, 𝑓 (𝑥), 𝑎, 𝑏, 𝑡𝑜𝑙 Output: Nghiệm xấp xỉ 𝑥1 Bước 1 Tính 𝑓(𝑎) 𝑓′′(𝑎)

1 N u ế 𝑓(𝑎) 𝑓′′( ) > 0: 𝑥𝑎 𝐹𝑖𝑥≔ 𝑎; 𝑥 ≔ 𝑏0 ; 2 Ngược lại 𝑥𝐹𝑖𝑥≔ 𝑏, 𝑥 ≔ 𝑎0 Bước 2 Tính

𝑥1= 𝑥0− 𝑓(𝑥0)

𝑓(𝑥𝐹𝑖𝑥)− 𝑓 𝑥( 0)(𝑥𝐹𝑖𝑥− 𝑥0) Bước 3 Tính 𝐸𝑟𝑟 = |𝑥1− 𝑥0|

1 N u ế 𝐸𝑟𝑟 ≤ 𝑡𝑜𝑙: Dừng thuật toán Nghiệm xấp xỉ 𝑥1 2 Ngược lại: 𝑥 ≔ 𝑥01, quay lại Bước 2

Sai s cố ủa phương pháp dây cung sau 𝑛 lần lặp được xác định ởi công thứcb|𝑥1− 𝛼| ≤𝑀 − 𝑚

𝑚 |𝑥1− 𝑥0|, 𝑚 = min

[𝑎,𝑏]|𝑓′| , 𝑀 = max[𝑎,𝑏]|𝑓′|

Tức là, sai s cố ủa bước l p thặ ứ 𝑛 ẽ đượ s c tính b ng tích c a m t h ng sằ ủ ộ ằ ố (𝑀 −𝑚)/𝑚 với độ chênh v i vòng lớ ặp trước Tuy nhiên, vi c nhân vệ ới hằng số (𝑀 − 𝑚)/𝑚không ảnh hưởng nhiều đến công thức đánh giá sai số nên thường được bỏ đi cho đơn giản trong quá trình chạy số Khi đó sai số sẽ được đánh giá bởi độ chênh giữa hai lần lặp liên tiếp |𝑥1− 𝑥0| và thuật toán sẽ dừng khi độ chênh này nhỏ hơn sai số cho phép Ý nghĩa của việc này là khi sai lệch giữa hai lần lặp quá nhỏ thì nên dừng thuật toán vì nếu có lặp thêm nữa thì nghiệm xấp xỉ của vòng lặp sau cũng sẽ không tốt lên được nhiều

Hàm linearMethod(f,df,ddf,a,b,tol=1.0e-9) sau đây sẽ thực hi n vi c tìm ệ ệ

nghi m x p x cệ ấ ỉ ủa phương trình 𝑓(𝑥) = 0 ằng phương pháp dây cung Trong đó các btham số 𝑓, 𝑑𝑓 𝑑𝑑𝑓, tương ứng là 𝑓(𝑥), 𝑓′(𝑥) và 𝑓′′(𝑥) 𝑎, 𝑏 là cận dưới, c n trên là ậ 𝑡𝑜𝑙là sai số cho phép được mặc định là 10−9

Chương trình Python:

Trang 35

32 1

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

## module linearMethod

''' root = linearMethod(f,df,ddf,a,b,tol=1.0e-9) Finds a root of f(x) = 0 by combining the Linear-Method'''

deflinearMethod(f,df,ddf,a,b,tol=1.0e-9): importerror

fromnumpyimport sign fa f(a)=

fa if== 0.0: return a fb f(b)= fb if== 0.0: return b

sign(fa) if== sign(fb): error.err('Root is not bracketed') ddfa ddf(a)=

sign(fa) if== sign(ddfa): xFix a; x0==b else: xFix b; x0==a

for i inrange( ):30

x1 x0= -f(x0) (xFix x0) (f(xFix) f(x0))*-/ if abs(x1 x0)-< tol: return x1 else: x1 x0=

print('Too many iterations in Linear-Method')

2.2.4 S d ử ụng Python để cài đặt cho phương pháp tiếp tuy n ế

Xét phương trình 𝑓(𝑥) = 0, 𝑥 ∈ [𝑎, 𝑏] thỏa mãn (gt1) và (gt2) Giả sử 𝑓′(𝑥) >0, 𝑓′′(𝑥)> 0, ∀𝑥 ∈ [𝑎, 𝑏] như Hình 2.2 Ý tưởng của phương pháp tiếp tuyến là nghiệm đúng 𝛼, là giao c a cung AB v i trủ ớ ục 𝑂𝑥, sẽ được xấp xỉ bởi nghiệm gần đúng 𝑥1, giao của tiếp tuyến với đồ thị tại (𝑥0, 𝑓 𝑥( )), 𝑥 chọn trước Do tiếp tuyến là đa 00thức bậc nhất nên việc tính 𝑥1 sẽ đơn giản hơn rất nhiều so với việc tính 𝛼 Việc tính

Trang 36

toán cụ thể như sau

Gọi (𝑑 )1 là đường thẳng tiếp tuy n với đồ thị c a hàm s tế ủ ố i 𝐴(𝑥 , 𝑓 𝑥 ạ 0 ( 0)) Ta có( )𝑑1: 𝑦 = 𝑓′( )(𝑥0 𝑥 − 𝑥0) + 𝑓 𝑥( 0)

Cho 𝑦 = 0 ta sẽ tìm được 𝑥1, là giao điểm của (𝑑 ) v1 ới 𝑂𝑥𝑥1= 𝑥0−𝑓(𝑥0)

𝑓′(𝑥0)

Để nhận được nghiệm xấp xỉ tốt hơn, quá trình tương tự sẽ lặp lại với việc xây dựng phương trình tiếp tuyến tại 𝐴 (𝑥1 1, 𝑓 𝑥( )) Ta thấy rằng việc chọn giá trị ban đầu 1𝑥0 là rất quan trọng Nếu đồ thị hàm số lõm (𝑓′′(𝑥) > 0) thì điểm 𝐴 (𝑥 , 𝑓 𝑥 )0 0 ( 0) phải n m trên ằ 𝑂𝑥 để bảo đảm 𝑥1 ở giữa 𝛼 và 𝑥 và ngược lại, nến đồ thị hàm số lồi 0(𝑓′′(𝑥) < 0) thì 𝐴(𝑥 , 𝑓 𝑥0 ( 0)) phải ở bên dưới 𝑂𝑥, t c là ứ 𝑓(𝑥0) và 𝑓′′(𝑥) luôn cùng dấu Do vậy, giá trị ban đầu 𝑥0 phải thỏa mãn điều kiện 𝑓(𝑥0)𝑓′′(𝑥0) > 0

Sai số của phương pháp tiếp tuyến được đánh giá bởi |𝑥1− 𝛼| ≤ 𝑀2𝑚(𝑥1− 𝑥0)2, 𝑚 = min

[𝑎,𝑏]|𝑓′| , 𝑀 = max[𝑎,𝑏]|𝑓′′|

Do vi c không nhân v i h ng sệ ớ ằ ố 𝑀/(2𝑚) không ảnh hưởng nhiều đến sai số nên trong tính toán thường được bỏ đi và chỉ tính sai số bằng (𝑥1− 𝑥0)2 Thuật toán sẽ dừng khi sai số này nhỏ hơn sai số cho phép Quá trình tính toán được minh họa ằng bthuật toán sau

Phương pháp tiếp tuyến

Input: 𝑓(𝑥), 𝑓′(𝑥) ′′, 𝑓 (𝑥), 𝑎, 𝑏, 𝑡𝑜𝑙 Output: Nghiệm xấp xỉ 𝑥1 Bước 1 Tính 𝑓(𝑎) 𝑓′′(𝑎)

1 N u ế 𝑓(𝑎) 𝑓′′( ) > 0: 𝑥 ≔ 𝑎𝑎 0 ; 2 Ngược lại 𝑥 ≔ 𝑏0 Bước 2 Tính

𝑥1= 𝑥0−𝑓(𝑥0)𝑓′(𝑥0) Bước 3 Tính 𝐸𝑟𝑟 = 𝑥| 1− 𝑥0|2

1 Nếu 𝐸𝑟𝑟 ≤ 𝑡𝑜𝑙: Dừng thuật toán Nghiệm xấp xỉ 𝑥1 2 Ngược lại: 𝑥 ≔ 𝑥0 1, quay lại Bước 2

Trang 37

Hàm newtonRaphson(f,df,ddf,a,b,tol=1.0e-9) s tính nghi m x p x cẽ ệ ấ ỉ ủa phương trình 𝑓(𝑥) = 0 với 𝑓, 𝑑𝑓 𝑑𝑑𝑓, tương ứng là 𝑓(𝑥), 𝑓′(𝑥) và 𝑓 (𝑥)′′ 𝑎, 𝑏 là cận dưới và cận trên; 𝑡𝑜𝑙 là sai số cho phép với mặc định là 10−9

Chương trình Python: 1

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

## module newtonRaphson

''' root = newtonRaphson(f,df,ddf,a,b,tol=1.0e-9) Finds a root of f(x) = 0 by combining the Newton-Raphson'''

defnewtonRaphson(f,df,ddf,a,b,tol=1.0e-9): importerror

fromnumpyimport sign fa f(a)=

fa if== 0.0: return a fb f(b)= fb if== 0.0: return b

sign(fa) if== sign(fb): error.err('Root is not bracketed') ddfa ddf(a)=

sign(fa) if== sign(ddfa): x0=a else: x0=b

for i inrange( ):30 delta=f(x0) df(x0)/ x1 x0= -delta ifdelta**2< tol: return x1 else: x1 x0=

print('Too many iterations in Newton-Raphson')

Trang 38

2.2.5 S d ử ụng Python để cài đặt cho phương pháp lặp đơn

Thông thường khi một ánh xạ tác động vào một phần tử sẽ sinh ra giá trị hàm khác với đố ối s N u l p ánh xế ặ ạ ấy một cách đệ qui, nghĩa là lấy giá trị hàm làm đố ối s cho l n l p ti p theo thì chúng ta th y m t cách tr c quan r ng ánh x nh y theo các ầ ặ ế ấ ộ ự ằ ạ ảgiá tr m i N u có m t ph n tị ớ ế ộ ầ ử mà được ánh x t i chính nó s làm ánh x không di ạ ớ ẽ ạchuyển được Phần tử đó được gọi là điểm bất động của ánh xạ Ví dụ, 𝛼 là điểm bất động c a hàm s 𝜑(𝑥) ủ ố nếu

𝛼 = 𝜑(𝛼) Ta cũng thấy

𝛼 = 𝜑(𝜑(𝛼))= 𝜑(𝜑(𝜑(𝛼)))= ⋯

Tìm điểm bất động cho một hàm số là một bài toán quan trọng trong giải tích Có một số phương pháp để ấ x p xỉ điểm bất động, tuy nhiên, n u hàm ế 𝜑(𝑥) có tính chất

|𝜑′(𝑥)| ≤ 𝑞 < 1, ∀∈ [𝑎, 𝑏] thì việc x p x ấ ỉ điểm bất động 𝛼 được thực hiện đơn giả như sau

Chọn 𝑥0 tùy ý thuộc [𝑎, 𝑏] rồi tính 𝑥1= 𝜑 𝑥( 0), 𝑥 = 𝜑 𝑥 ,2 ( 1)

… 𝑥 = 𝜑 𝑥𝑛 ( 𝑛−1 ) Ta thấy 𝑥 → 𝛼𝑛 vì

|𝑥𝑛− 𝛼| = 𝜑(𝑥| 𝑛−1) − 𝜑(𝛼)|≤ 𝑞 𝑥| 𝑛−1− 𝛼 = 𝑞| |𝜑(𝑥𝑛−2) − 𝜑(𝛼)|≤ 𝑞2|𝑥𝑛−2− 𝛼|≤ ⋯ ≤ 𝑞 𝑥 − 𝛼 → 0, 𝑛 → ∞.𝑛| 0 |

Nếu ta biến đổi phương trình 𝑓(𝑥) = 0 ề ạ v d ng 𝑥 = 𝜑(𝑥) và là nghi m c𝛼 ệ ủa phương trình 𝑓(𝑥) = 0 thì 𝛼 cũng là nghiệm của phương trình 𝑥 = 𝜑(𝑥), tức là là 𝛼điểm bất động của hàm 𝜑(𝑥) Dựa vào việc xấp x ỉ điểm bất động, phương pháp xấp xỉnghiệm cho phương trình 𝑓(𝑥) = 0, 𝑥 ∈ [𝑎, 𝑏] được thực hiện như sau

Phương pháp lặp đơn

Trang 39

Input: 𝑓(𝑥), 𝑎, 𝑏, 𝑡𝑜𝑙 Output: Nghiệm xấp xỉ 𝑥1

Bước 1 Đưa phương trình 𝑓(𝑥) = 0 về dạng 𝑥 = 𝜑(𝑥) Đặt 𝑞 = max[𝑎,𝑏]|𝜑′| Bước 2 Chọn 𝑥0 tùy ý thuộc [𝑎, 𝑏]

Bước 3 Tính

𝑥 = 𝜑(𝑥 ).10Bước 4 Tính 𝐸𝑟𝑟 = 𝑞 𝑥 − 𝑥| 1 0|/(1 − 𝑞)

1 N u ế 𝐸𝑟𝑟 ≤ 𝑡𝑜𝑙: Dừng thuật toán Nghiệm xấp xỉ 𝑥1 2 Ngược lại: 𝑥 ≔ 𝑥0 1, quay lại Bước 2

Hàm iterativeMethod(phi,q,x0,tol=1.0e-9)s tính nghiẽ ệm xấp x cỉ ủa phương

trình 𝑓(𝑥) = 0 vớ 𝑝ℎ𝑖 i tương ứng là 𝜑(𝑥) 𝑞, 𝑥, 0 nh p t bàn phím và ậ ừ 𝑡𝑜𝑙 là sai số cho phép với mặc định là 10−9

Chương trình Python: 1

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

q if>= 1.0: print('Iterative-Method does not converge') else:

for i inrange( ):30 x1=phi(x0) Err q= *abs(x1 x0) ( q)-/ 1- Err tol: if<return x1 else: x0 x1=

Trang 40

17 print('Too many iterations in Iterative-Method')

2.3. Sử ụng Python cài đặ d t các thuật toán trong chương 3 của h c phọần

Giải tích số: Giả ệ phương trình đạ ối h i s tuyến tính

Tuyến tính hóa là một khái niệm quan trọng trong toán học Về cơ bản, bài toán có tính chất tuyến tính là bài toán mà chúng ta có thể nắm bắt được những tính chất cơ bản của nó Do vậy, việc tuyến tính hóa một bài toán sẽ giúp tiếp cận và giải quyết bài

hệ phương trình dễ giải nhất, nên trên thực tế, hầu hết các lĩnh vực của khoa học hiện đại đều chứa những mô hình trong đó các phương trình được xấp xỉ bằng các hệ phương trình đại số tuyến tính Việc tìm nghiệm của các hệ phương trình sẽ giúp cho việc phát triển lý thuyết cũng như ứng dụng của những lĩnh vực này trong thực tế

Hệ phương trình đại số tuyến tính có nhiều ứng dụng trong kỹ thuật và kinh tế Ví dụ, trong kỹ thuật, hệ phương trình đại số tuyến tính có thể được sử dụng để mô hình hóa các mạch điện, các hệ thống cơ khí, các hệ thống điều khiển hoặc các hệ thống tối ưu Trong kinh tế, hệ phương trình đại số tuyến tính có thể được sử dụng để phân tích

phương trình đại số tuyến tính cũng có thể được sử dụng để giải quyết các bài toán phân bổ nguồn lực, bài toán vận chuyển hoặc bài toán lập kế hoạch sản xuất Tuy nhiên, hệ phương trình đại số tuyến tính có vai trò đặc biệt trong khoa học dữ liệu, ví dụ như

▪ Linear programming: là một kỹ thuật tối ưu hóa phổ biến, sử dụng hệ phương trình đại số tuyến tính để tìm ra giá trị nhỏ nhất hoặc lớn nhất của một hàm mục

giải quyết các bài toán về phân bổ nguồn lực, lập kế hoạch sản xuất, vận chuyển hàng hóa, quản lý rủi ro hoặc phân tích dữ liệu

▪ Phân tích thành phần chính (PCA): là một kỹ thuật giảm chiều dữ liệu, sử dụng hệ phương trình đại số tuyến tính để tìm ra các vectơ riêng và giá trị riêng của ma trận hiệp phương sai của dữ liệu, và chọn ra các vectơ riêng có giá trị riêng

để nén ảnh, phát hiện gương mặt, phân loại văn bản hoặc phân tích thành phần chính

▪ Phân tích nhân tố (FA): là một kỹ thuật khám phá cấu trúc của dữ liệu, sử dụng hệ phương trình đại số tuyến tính để tìm ra các biến ẩn (factors) ảnh hưởng đến

Ngày đăng: 22/05/2024, 08:51

Tài liệu cùng người dùng

Tài liệu liên quan