Đang tải... (xem toàn văn)
BỘ KẾ HOẠCH VÀ ĐẦU TƯ
HỌC VIỆN CHÍNH SÁCH VÀ PHÁT TRIỂN
Trí tuệ và Phát triển
SỬ DỤNG PYTHON VỚI BÀI TẬP ỨNG DỤNG PHÉP TOÁNVỀ TÍNH ĐỊNH THỨC TRONG KINH TẾ
GVHD: Trần Thị Hương TràSVTH: 1 Trần Thị ThanhTrang
2 Thân Huyền Trang3 Vũ Thị Huyền Trang4 Nguyễn Hà Vy5 Lê Quỳnh Trang Lớp: PTDLL13
HÀ NỘI – NĂM 2022
Trang 24 Nhiệm vụ nghiên cứu 3
5 Đối tượng nghiên cứu 4
6 Phương pháp nghiên cứu 4
B PHẦN NỘI DUNG 5
Chương 1: Giới thiệu tổng quan về ngôn ngữ lập trình Python và Định thức 5
1.1.Ngôn ngữ lập trình Python 5
1.2.Giới thiệu cách nhập dữ liệu vào phần mềm Python 10
Chương 2: Lý thuyết Định thức trong Đại số tuyến tính 11
1.1 Định nghĩa: 11
1.2 Khai triển định thức theo hàng (cột) 13
1.3 Các tính chất của định thức 15
1.4 Cách tính định thức bằng phép biến đổi sơ cấp 16
Chương 3: Sử dụng Python với bài tập ứng dụng phép toán về tính Định thức trong kinhtế 17
1.1 Giới thiệu về thư viện Numpy trong Python: 17
1.2 NumPy được viết bằng ngôn ngữ gì? 18
2.1 Định thức của ma trận vuông cấp n khi ứng dụng vào NumPy 21
2.2 Các ví dụ minh họa cho việc xử lí dữ liệu với bài toán kinh tế bằng NumPy 22
C KẾT LUẬN 25
1 Quan điểm cá nhân về đề tài nghiên cứu 25
2 Tài liệu tham khảo 25
Trang 3
A PHẦN MỞ ĐẦU.
1 Lý do chọn đề tài.
Trong thời đại 4.0 – xu hướng kết hợp giữa các hệ thống ảo và thực thể, vạn vật kết nối internet – đang thách thức ý niệm của chúng ta về vai trò thực sự của con người Cùng với đó là sự lớn dần của các con số kinh tế luôn là bài toán đau đầu thách thức các doanh nghiệp Nhưng trong thời đại số như hiện nay số lượng tìm kiếm về lập trình Python để xây dựng các phép toán về trong kinh tế ngày cànggia tăng với tốc độ chóng mặt trong nhiều năm đổ lại đây Các doanh nghiệp, công ty vừa và nhỏ luôn luôn nóng ghế cho các vị trí nhân sự phục vụ mảng đề tài này Vì vậy, chúng em chọn đề tài này để giữa phần môn Toán cao cấp để phân tích rõ hơn về mối liên hệ chặt chẽ của toán với công nghệ thông tin Từ đó giúp nhiều hơn các bạn sinh viên đang có trong mình hướng đi này hiểu hơn về quá trình học tập cần thiết đối với môn học này
2 Phạm vi đề tài
Trong khuôn khổ của tiểu luận khoa học, đề tài của nhóm em chỉ giới hạn trong việc nghiên cứu sử dụng Python vào bài tập ứng dụng về phép toán tính định thực trong kinh tế.
3 Mục đích nghiên cứu
Trong phạm vi đề tài của nhóm em, chúng em muốn nghiên cứu, tìm tòi về cách sử dụng Python để giải quyết các bài toán Nhằm giúp học sinh, sinh viên, những người muốn học về Python với bài tập ứng dụng phép toán về tính định thứctrong kinh tế.
+ Biết sử dụng Python cơ bản.
+ Hiểu và vận dụng một số phép toán, hàm có sẵn trong ngôn ngữ lập trình.+ Giúp càng nhiều người tiếp cận dễ dàng hơn với Python và ứng dụng bài tập phép toán tính định thực trong kinh tế.
- Cũng qua đề tài, nhóm chúng em muốn cùng các bạn sinh viên trao đổi, trau dồi kĩ năng nhằm góp phần nâng cao trình độ và khả năng mở rộng kiến thức.
Trang 44 Nhiệm vụ nghiên cứu.
Sinh viên hoàn thành nội dung đề tài, báo cáo thành chuyên đề nộp và thuyếttrình trong phần thi giữa kì phần môn Toán cao cấp để cùng các bạn trao đổi và bổ sung những thiếu sót của đề tài Giao lưu học hỏi, trao đổi kinh nghiệm với các bạntrong lớp.
5 Đối tượng nghiên cứu
Nghiên cứu về cách sử dụng Python và ứng dụng vào bài tập về tính định thực trong kinh tế cho những người mới bắt đầu
6 Phương pháp nghiên cứu.
Phương pháp phân tích, tổng hợp.
Trang 5B PHẦN NỘI DUNG.
Chương 1: Giới thiệu tổng quan về ngôn ngữ lập trình Python và Định thức.
1.1.1.Lịch sử ra đời.- Lịch sử của Python:
Python là một ngôn ngữ lập trình được tạo ra bởi Guido Van Rossum Thiết kế bắt đầu vào cuối những năm 1980 và được phát hành lần đầu tiên vào tháng 2 năm 1991.
- Tại sao Python được tạo ra?
Vào cuối những năm 1980, Guido Van Rossum làm việc trong Amoeba, phân phốimột nhóm hệ điều hành Ông muốn sử dụng một ngôn ngữ thông dịch như ABC (ABC có cú pháp rất dễ hiểu) để truy cập vào những cuộc gọi hệ thống Amoeba Vì vậy, ông quyết định tạo ra một ngôn ngữ mở rộng Điều này đã dẫn đến một thiết kế của ngôn ngữ mới, chính là Python sau này.
- Tại sao lại có tên là Python?
Ồ, Python không phải được đặt theo tên của con rắn thần Python trong thần thoại Hy Lạp đâu Rossum là fan của một sê-ri chương trình hài cuối những năm 1970, và cái tên “Python” được lấy từ tên một phần trong sê-ri đó “Monty Python’s Flying Circus”.
- Các phiên bản Python đã phát hành:
Python 1.0 (bản phát hành chuẩn đầu tiên)
Python 1.6 (Phiên bản 1.x cuối cùng) 01/1994 05/09/2000 Python 2.0 (Giới thiệu list comprehension)
Python 2.7 (Phiên bản 2.x cuối cùng)
16/10/2000 03/07/2010 Python 3.0 (Loại bỏ cấu trúc và mô-đun trùng lặp)
Python 3.8.5 (Bản mới nhất tính đến thời điểm cập nhật bài)
03/12/2008 20/07/2020
1.1.2 Giới thiệu các phép toán trong P.
Trang 6a) Các phép toán số học với số nguyên.
*Ví dụ 1:
Kết quả:
Trang 7Python cho phép tính toán với các số nguyên có giá trị lớn Ví dụ:
Hiển thị kết quả 2021 lũy thừa 20: Chương trình:
a = 2021 n = 20 s = a**n
Trang 8print("Chu vi hình tròn là: ",C)
Kết quả:
Trang 9c Các phép toán quan hệ
Chú ý: Kết quả của các phép toán quan hện cho giá trị logic (True or False)
d Các phép toán logic
Chú ý: Một trong những ứng dụng của phép toán logic là để tạo ra các biểu thức phứctạp từ các quan hệ đơn giản
Trang 101.2 Giới thiệu cách nhập dữ liệu vào phần mềm Python
Trong Python để nhập liệu ta dùng hàm input() Giá trị nhập vào của hàm input() thường là kiểu chuỗi, do đó ta cần chuyển kiểu nếu như muốn lưu trữ giá trị nhập vào không phải kiểu chuỗi
Bây giờ trong PyCharm ta tạo một tập tin tên là: HocNhapLieu.py với các lệnh sau:
1 2 3 4
print("Mời bạn nhập cái gì đó:")s=input()
print("Bạn nhập:",s)print("Kiểu dữ liệu:",type(s))
Bạn chạy File HocNhapLieu.py, sau đó nhập một vài dữ liệu để kiểm tra:
Trường hợp 1: Bạn nhập giá trị là 113, ta có kết quả:
Bạn quan sát ta nhập 113,, nhưng kiểu dữ liệu vẫn là chuỗi str
Trường hợp 2: Bạn nhập giá trị là 9.5, ta có kết quả:
Trường hợp 3: Bạn nhập giá trị là Obama, ta có kết quả:
Trang 11Trường hợp 4: Bạn nhập giá trị là True, ta có kết quả:
Bạn thấy đó, mọi trường hợp điều là kiểu chuỗi str (cho dù bạn nhập loại dữ liệu nào đi nữa)
Chương 2: Lý thuyết Định thức trong Đại số tuyến tính 1.1 Định nghĩa:
1.1.1 Hoán vị: Cho A = {1,2,3,…,n}
- Hoán vị của n phần tử là 1 cách sắp xếp n phần tử đó theo thứ tự khác nhau - Số hoán vị: n!
- Ví dụ: A= {1,2,3} => số hoán vị: 3! 1.1.2 Nghịch thế: Xét hoán vị {j , j , …, j }12n
- Định nghĩa: Nghịch thế là cặp (j , j ) thoản mãn hk jh > jk với h < k
(Trên một phép thế nào đó người ta xác định cặp số mà số đứng trước lại lớn hơn số đứng sau gọi là một nghịch thế.)
- Ví dụ: (1,3,5,2,4) có nghịch thế là: (3,2); (5,2); (5,4) - Ký hiệu: N (j , j , , j ) = số nghịch thế.12n
Trang 12- Ví dụ: N (2,4,3,1) = 4
N (3,4,5,1,2) = 61.1.3 Định thức:
- Trong đại số tuyến tính, định thức là một hàm cho mỗi ma trận vuông , tương Aứng với số vô hướng, ký hiệu là det( ) A
- Ý nghĩa hình học của định thức là tỷ lệ xích cho thể tích khi được coi là một Abiến đổi tuyến tính.
* Với mỗi ma trận vuông A cấp n:
a11 a a a12 13 1n 21 22 aa a23 a2n an1 an2 an3 ann
tồn tại một số thực được gọi là định thức của ma trận A, được kí hiệu:
a11 a a a1n12 13 a21 22 a a23 a2n an1 an2 an3 ann
- Cách tính định thức theo định nghĩa: Xét ma trận A vuông cấp n, định thức của A: det A = |A| = ∑ (-1)N(j1,j2,…,jn)
det(A)= |A| =
Trang 13Dấu "+" trước 3 tích sau: Tích 3 phần tử nằm trên đường chéo chính, tích 3 phần tửlà 3 đỉnh của 1 tam giác có 1 cạnh song song với đường chéo chính (không có 2 phần tử nào cùng hàng, cùng cột)
Dấu "-" trước 3 tích sau: Tích 3 phần tử nằm trên đường chéo phụ, tích 3 phần tử là 3 đỉnh của 1 tam giác có 1 cạnh song song với đường chéo phụ (không có 2 phầntử nào cùng hàng, cùng cột).
a) Định thức con tương ứng với phần tử aij (ký hiệu: M ) ij
- Là định thức thu được bằng cách bỏ đi hàng i, cột j của A.
1 4 7
Trang 14A = 2 5 8 => M22 = 1 7 = -12 3 6 9 3 9
b) Phần bù đại số tương ứng với phần tử aij
Kí hiệu: A = (-1) det M iji+jij
Ví dụ: 1 4 7
A = 2 5 8 => A23 = - 1 4 = 6 3 6 9 3 6
c) Khai triển định thức theo hàng (cột) - Khai triển định thức theo hàng i: det A = ∑
❑ (-1) a det M i +jijij
- Khai triển định thức theo cột j: det A = ∑
(-1) aij det M i+jij
* Ví dụ: Tìm x?
2 0 x 2
x x 0 2 = 0 (C3) x x x 2 x 2 0 x x 2 x = 0 2 x 0 2 2 x 2ó x (4x + 2x + 2x – 8 – 2x – x ) = 0 2223
-x + 2x + 4x – 8 = 032ó X= 2
Trang 15
* Note: Định thức của ma trận tam giác bằng tích các phần tử trên đường chéo chính
1.3 Các tính chất của định thức.
Tính chất 1: Định thức của một ma trận vuông bằng định thức của ma trận chuyển vị của nó
det (A) = det (A’)
Các tính chất của định thức đúng với dòng đều đúng với cột.
3 5 = 13 -1 5 = 13
Tính chất 2: det (AB) = det (A) det(B)
Tính chất 3: Nếu đổi chỗ 2 hàng (2 cột) của định thức => định thức đổi dấu
Ví dụ: 1 4 77 4 1 2 5 8 = ─ 8 5 2 3 6 9 9 6 3
Tính chất 4: Nếu định thức có 1 hàng (1 cột) = 0 => định thức bằng 0 Nếu định thức có 2 hàng (2 cột) tỉ lệ => định thức bằng 0 Tính chất 5: Nếu nhân 1 hàng với k ≠ 0 thì định thức mới gấp k lần định thức cũ.
* Hệ quả: -Nếu A là ma trận vuông cấp n thì det (kA) = k detAn
Ví dụ: A3x3; |A|=4 => det (2A) = 2 4 = 323 -Rút nhân tử chung của 1 hàng (1 cột) ra ngoài định thức
Trang 166 4 1 = 3 2 2 2 1 9 8 1 3 4 1
Tính chất 6: Cộng vào 1 hàng (1 cột) tổ hợp tuyến tính các hàng khác (cột khác)thì định thức không đổi.
Ví dụ:
1 2 3 x (-1) 1 2 3 4 5 6 x (-1) = 4 5 6 = 0 5 7 9 0 0 0
Tính chất 7: Tính chất tách định thức.
a1 + a a + a a + a a a1’ 22’ 33’ 12 a3 a1’ a a2’ 3’ b b12 b3 = b b b123 + b1 b2 b3 c c12 c3 c1 c2 c3 1 2 3ccc
1.4 Cách tính định thức bằng phép biến đổi sơ cấp.
- Phép biến đổi sơ cấp: Đổi chỗ 2 hàng (2 cột).Nhân 1 hàng (1 cột) với k ≠ 0.
Cộng vào 1 hàng (1 cột) 1 tổ hợp tuyến tính các hàng khác (cột khác).Sử dụng phép BĐSC để đưa định thức bất kỳ về định thức tam giác hoặc
định thức có nhiều số 0
*Ví dụ 1:
1 -3 2 7 x (-1) x (-3) x (-2) 1 -3 2 7 1 - 3 2 7
Trang 171 -2 1 6 ó 0 1 -1 -1 x (-11) 0 1 -1 -1ó 3 -9 7 2 0 0 1 -19 0 0 1 -19 x-6 2 5 -1 -2 0 11 -5 -16 0 0 6 -5
1 -3 2 7 ó 0 1 -1 -1 = 109 0 0 1 -19 0 0 0 109 *Ví dụ 2: Tìm x?
1+ x 1 1 1 x (-1) x (x-1) 1+x 1 1 1 -x -x 0 1 1-x 1 1 = 64 -x -x 0 0 = 64 (c4) (-1) -x 0 x = 64 1 1 1+x 1 -x 0 x 0 x2 x x 1 1 1 1-x x2 x x 0
(-1) (-x) x x 1 1 0 = 64 x (x + 1 - 1) = 64 x = 64 x = 8 x = 8 342 -1 0 1 x = -8 x 1 1
Chương 3: Sử dụng Python với bài tập ứng dụng phép toán về tính Định thứctrong kinh tế.
* Phương pháp xử lý Định thức trong Python bằng thư viện Numpy
1.1 Giới thiệu về thư viện Numpy trong Python:
1.1.1 Tại sao lại chọn NumPy để tính toán thay vì các thư viện toán học khác? - Numpy (Numeric Python) là một thư viện toán học phổ biến cốt lõi và mạnh mẽ phục vụ cho khoa học máy tính của Python
Trang 18- Thư viện này cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ liệuma trận và mảng lớn và nhiều chiều, có kích thước lớn với các hàm đã được tối ưu với tốc độ xử lý nhanh hơn rất nhiều lần
- 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
1.2 NumPy được viết bằng ngôn ngữ gì?
NumPy là một thư viện Python được viết một phần bằng Python và hầu hết các phần được viết bằng C hoặc C++ Và nó cũng hỗ trợ các phần mở rộng bằng các ngôn ngữ khác, thường là C++ và Fortran.
1.2.1 Cài đặt thư viện:
- Để cài đặt thư viện Numpy trong Python, chúng ta tiến hành: + Mở Command Prompt.
+ Gõ dòng lệnh “pip install numpy”
Pip là viết tắt của từ Preferred Installer Program: Là một tiện ích dòng lệnh cho phép cài đặt, cài đặt lại hoặc gỡ các gói PyPI (thư viện) bằng các câu lệnh đơn giản.
Trang 191.2.2 Sử dụng thư viện Numpy:1.2.2.1 Khai báo thư viện:
- Để tiến hành sử dụng thư viện Numpy, từ màn hình lập trình Python, ta nhập dòng lệnh “import numpy as np”
import numpy as np*Giải thích: Cấu trúc import:
import (name, globals=None, locals=None, fromlist=(), level= )0-Trong đó:
+ Name: tên Module cần nhập (Module là cách mà chúng ta phân hóa chương trìnhra các nhánh nhỏ cho dễ quản lý và gọi lại khi cần thiết => Làm cho chương trình có khả năng tái sử dụng, bảo trì cao)
+ Globals và locals: xác định cách để diễn giải tên
+ Fromlist: Tên của các đối tượng hoặc mô hình con _ nên được nhập từ module cung cấp theo tên.
+ Level: Chỉ định sử dụng với import tuyệt đối hay tương đối.
Đây là một câu lệnh khởi đầu, vì vậy nhóm chỉ giới thiệu sơ bộ với các bạn là khai báo như dòng trên, không nên đào sâu khái niệm.
1.2.2.2 Khởi tạo mảng:a) Khởi tạo mảng một chiều.
#Khở i tạo mả ng một chiề u với kiề u dữ liệu các phầ n tử là Integerảrr np.ảrrảy([=1,3,4,5,6], dtype =int)
#Khở i tạo mả ng một chiề u với kiề u dữ liệu mặc địnhảrr np.ảrrảy([=1,3,4,5,6])
Trang 20print(arr)OUTPUT:[1 3 4 5 6]
b) Khởi tạo mảng hai chiều.ảrr1 np.ảrrảy([(=4, ,5 6), (1,2,3)], dtype =int)
OUTPUT:[[4 5 6]4[1 2 3]]
c) Khởi tạo mảng ba chiềuảrr2 np.ảrrảy(([(=2,4,0,6), (4, , , )],7 5 6 [(0, , ,3 2 1), (9,4,5,6)],
[(5, , ,8 6 4), (1,4,6,8)]), dtype )=int
OUTPUT:[[[2 4 0 6]4 [4 7 5 6]]4[[0 3 2 1]4 [9 4 5 6]]4[[5 8 6 4]4 [1 4 6 8]]]
d) Khởi tạo với các 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.
Trang 21np.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.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.1.2.2.3 Thao tác với mảng
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.
print("Kích thửớc cu ả mả ng:", ảrr2.shảpe)print("Số? phầ n tử trong mả ng:", ảrr2.size)print("Số? chiề u cu ả mả ng:", ảrr2.ndim)
Kiểu dữ liệu của phần tử trong mảng: int32Kích thước của mảng: (3, 2, 4)
Số phần tử trong mảng: 24Số chiều của mảng: 3
2.1 Định thức của ma trận vuông cấp n khi ứng dụng vào NumPy.
- Khi bạn đã biết cách trình bày một ma trận, chúng ta đi vào tính định thức Định thức của MT vuông A, kí hiệu là det(A) _ Chú ý: Định thức là SỐ chứ không phải MA TRẬN.