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

bài tiểu luận báo cáo giữa kỳ giải tích ứng dụng cho khoa công nghệ thông tin

27 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

Nội dung

Python hỗ trợ các module và gói packages, khuyến khích chương trìnhmodule hóa và tái sử dụng mã.object-Lịch sử hình thành PythonPython là một ngôn ngữ lập trình do Guido van Rossum tạo r

Trang 1

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAMTRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

KHOA CÔNG NGHỆ THÔNG TIN

NGUYỄN THỊ MINH HƯƠNG - 52300201

BÀI TIỂU LUẬN

BÁO CÁO GIỮA KỲ

GIẢI TÍCH ỨNG DỤNG CHO KHOACÔNG NGHỆ THÔNG TIN

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

Trang 2

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAMTRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

KHOA CÔNG NGHỆ THÔNG TIN

NGUYỄN THỊ MINH HƯƠNG - 52300201

BÀI TIỂU LUẬNBÁO CÁO GIỮA KỲ

GIẢI TÍCH ỨNG DỤNG CHO KHOACÔNG NGHỆ THÔNG TIN

Người hướng dẫnGiảng viên Nguyễn Thị Diễm Hằng

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

Trang 3

LỜI CẢM ƠN

Lời đầu tiên, em xin được gửi lời cảm ơn chân thành nhất đến cô Nguyễn ThịDiễm Hằng Trong suốt quá trình học tập và tìm hiểu môn học, em đã nhận được rấtnhiều sự quan tâm, giúp đỡ, hướng dẫn tâm huyết và tận tình của cô Cô đã giúp emtích lũy thêm nhiều kiến thức về môn học này cũng như đưa ra những góp ý đã giúpem có thể hoàn thành bài tiểu luận này cách tốt nhất Em rất biết ơn và cảm kích vìsự hỗ trợ vô cùng to lớn của cô Mặc dù đã cố gắng hoàn thành đề tài, nhưng emnhận thấy rằng bài làm vẫn còn nhiều điểm cần cải thiện Em rất mong nhận đượcthêm sự góp ý thầy/cô để bài tiểu luận trở nên hoàn thiện hơn Em xin chân thànhcảm ơn!

TP Hồ Chí Minh, ngày 22 tháng 12 năm 2023 Tác giả

Đã kíNguyễn Thị Minh Hương

Trang 4

BÀI TIỂU LUẬN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNGTôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự

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ìnhthức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phântích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau cóghi rõ trong phần tài liệu tham khảo.

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í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áchnhiệm về nội dung tiểu luận của mình Trường Đại học Tôn Đức Thắngkhông liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trongquá trình thực hiện (nếu có).

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

Tác giảĐã kíNguyễn Thị Minh Hương

Trang 5

TÓM TẮTBài tiểu luận được trình bày gồm 2 chương:CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

Giới thiệu tổng quan về Python

Giới thiệu các thư viện như Sympy, Numpy, Matplotlib,…Trình bày các bước thực hiện câu 1a, 1b, 1c

CHƯƠNG 2: THỰC NGHIỆMCung cấp mã nguồnHình ảnh kết quả

Trang 6

1.1.2 Các thư viện Numpy, Sympy, Matplotlib,

1.1.3 Môi trường làm việc

1.2 Trình bày các bước thực hiện câu 1a, 1b,1c

1.2.1 Trình bày các bước thực hiện câu 1a

1.2.2 Trình bày các bước thực hiện câu 1b

1.2.3 Trình bày các bước thực hiện câu 1c

Trang 7

CHƯƠNG 1 DANH MỤC HÌNH VẼ

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.1 Giới thiệu

1.1.1 Hình 1 Hình ảnh minh họa Python

1.1.2 Hình 2 Thư viện Numpy

1.1.2 Hình 3 Thư viện SymPy

1.1.2 Hình 3 Thư viện Matplotlib

Trang 8

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT2.1 Giới thiệu

2.1.1 Giới thiệu ngôn ngữ Python

Hình 1 Hình ảnh minh họa Python

Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamicsemantics) Python hỗ trợ các module và gói (packages), khuyến khích chương trìnhmodule hóa và tái sử dụng mã.

(object-Lịch sử hình thành Python

Python là một ngôn ngữ lập trình do Guido van Rossum tạo ra và lần đầu ra mắt vàonăm 1991 Từ đó, Python đã trải qua nhiều phiên bản phát triển đáng kể Dưới đâylà một số phiên bản quan trọng của Python:

Python 1.0: Phát hành vào năm 1994 với các tính năng như lambda, map, filter và reduce.

Python 2.0: Ra mắt vào ngày 16 tháng 10 năm 2000, với nhiều tính năng mớinhư hỗ trợ Unicode và xử lý danh sách nhanh hơn.

Python 3.0: Phát hành vào ngày 3 tháng 12 năm 2008, Python 3.0 mang lại nhiều cải tiến như in hàm và hỗ trợ tốt hơn cho việc xử lý chuỗi.

Python đã trải qua nhiều phiên bản khác nhau và ngày càng được cải tiến và hoàn thiện hơn Điều này cho thấy sự phát triển liên tục và cam kết của cộng đồng lập trình đối với ngôn ngữ này.

Các đặc điểm của ngôn ngữ Python:

Trang 9

Dễ dàng để sử dụng: Python là một ngôn ngữ bậc cao rất dễ dàng để sử dụng với số lượng từ khóa ít hơn và cú pháp đơn giản, phần code của Python được định nghĩa rõ ràng và rành mạch, giúp người đọc dễ dàng hiểu.Thư Viện Rộng Lớn: Python có một thư viện chuẩn khá rộng lớn và dễ dàng tích hợp với UNIX, Windows và Macintosh.

Là ngôn ngữ thông dịch: Trình thông dịch thực thi code theo từng dòng (và bạn không cần phải biên dịch ra file chạy), điều này giúp cho quá trình debugtrở nên dễ dàng hơn

Là ngôn ngữ lập trình hướng đối tượng và hỗ trợ các phương thức lập trình theo hàm và theo cấu trúc.

Hỗ Trợ Đa Dạng: Python hỗ trợ lập trình GUI, mã nguồn mở và có thể tích hợp với các ngôn ngữ lập trình khác.

công việc.

Python có thể kết nối dễ dàng đến cơ sở dữ liệu, hay cả việc đọc và ghi file.

2.1.2 Các thư viện Numpy, Sympy, Matplotlib,…

Trang 10

a, Thư viện Numpy:

Hình 2 Hình ảnh minh họa thư viện NumPy

NumPy (Numeric Python): là một thư viện phổ biến và mạnh mẽ trong Python,được sử dụng để tạo và quản lý mảng, thực hiện các phép toán logic và thực hiệncác phép toán số học tuyến tính NumPy hỗ trợ tích hợp với nhiều ngôn ngữ như Cvà C++.

Các hàm quan trọng trong NumPy:

np.array(): Chuyển đổi một đối tượng thành mảng NumPy.np.zeros() và np.ones(): Tạo mảng chứa toàn số 0 hoặc 1.np.arange(): Tạo mảng theo dãy số.

np.linspace(): Tạo mảng với số lượng phần tử cố định trong khoảng giữa hai giátrị.

np.shape() và np.reshape(): Lấy hình dạng hoặc thay đổi hình dạng của mảng.np.sum(), np.mean(), np.min(), np.max(): Các hàm thống kê trên mảng.

Ví dụ: Từ thư viện Numpy ta có thể tạo và sử dụng mảng NumPy cũng như một sốhàm thống kê cơ bản như sau:

importnumpy asnp# Tạo ma ng 1 chiề u

mang_1d =np.array([1, , , , , , , , , 2 3 4 5 6 7 8 9 10])# Tạo ma ng 2 chiề u

mang_2d =np.array([[45], [ , , 7 8 9]])# Tính tổ ng, trung bình, tổ-i thiề u, tổ-i đa cu a ma ngtong_mang_1d =np.sum(mang_1d)

trung_binh_mang_2d=np.mean(mang_2d)min_mang_1d =np.min mang_1d()max_mang_2d =np.max mang_2d()#In ra kề-t qua

print("Tổ ng:", tong_mang_1d)

Trang 11

print("Trung bình:", trung_binh_mang_2d)print("Giá trị nho nhấ-t:", min_mang_1d)print("Giá trị lớn nhấ-t:", max_mang_2d)

b, Thư viện Sympy:

Hình 3 Hình ảnh minh họa thư viện SymPy

SymPy là một thư viện Python dành cho toán học biểu tượng Nó nhằm mục đíchtrở thành một hệ thống đại số máy tính (CAS) đầy đủ tính năng trong khi vẫn giữmã đơn giản nhất có thể để dễ hiểu và dễ mở rộng SymPy được viết hoàn toàn bằngPython.

Một số hàm quan trọng trong SymPy và ví dụa, Hàm solve

Ví dụ: importsympy assp#Tạo ra ký hiệu xx=sp.symbols( )'x'#Giai phương trình x^2+4x+4root =sp.solve(x**2+4*x )+

#In ra nghiệm cu a phương trình

print(root)b, Hàm diff

Trang 12

importsympy assp# Tạo ra ký hiệu xx=sp.symbols( )'x'# Xác định biề u thứcf x=** +3 2* ** +x2 3x+1

#Tính đạo hàm dao_ham =sp.diff( , )f x# In ra kề-t qua cu a đạo hàm

print(dao_ham)c, Hàm Lambdify

Lambdify là một hàm chuyển đổi các biểu thức của nó thành các hàm Python.Ví dụ:importsympy assp

x=sp.symbols( )'x'b_thuc x=** +2 3x+2

# Sư dụng lambdify đề chuyề n biề u thức thành hàm Pythonf=sp.lambdify(xb_thuc)

# Sư dụng hàm Python đã tạo đề tính giá trị cu a biề u thức với một giátrị vd là 2

k_qua f= (2)print(k_qua)

Ngoài ra, còn rất nhiều hàm khác có trong thư viện SymPy để tạo các biến và hàm, cũng như mở rộng và đơn giản hóa các câu lệnh toán học một cách tượng trưng và giải các phương trình, bất phương trình và thậm chí cả hệ phương trình / bất phươngtrình Vì thế, với khả năng mạnh mẽ và linh hoạt, SymPy là một công cụ hữu ích cho những người làm việc trong lĩnh vực toán học và khoa học máy tính sử dụng Python.

c, Thư viện Matplotlib:

Hình 4.Hình ảnh minh họa thư viện Matplotlib

Trang 13

Matplolib là một thư viện phổ biến trong Python được sử dụng để hiển thị dữ liệu dưới dạng biểu đồ hai chiều và ba chiều Thư viện này thường được sử dụng trong các ứng dụng khoa học và có khả năng hiển thị dữ liệu dưới nhiều dạng biểu đồ khác nhau.

Các hàm quan trọng trong Matplotlib bao gồm:1 plot(): Dùng để vẽ biểu đồ đường.2 scatter(): Dùng để vẽ biểu đồ phân tán.3 bar(): Dùng để vẽ biểu đồ cột.4 hist(): Dùng để vẽ biểu đồ histogram.

5 xlabel() và ylabel(): Dùng để đặt nhãn cho trục x và trục y.6 title(): Dùng để đặt tiêu đề cho biểu đồ.

Ví dụ về cách sử dụng các hàm từ thư viện Matplotlib để vẽ biểu đồimportmatplotlib pyplot asplt

Tóm lại, Matplotlib là một công cụ linh hoạt, dễ sử dụng để tạo và tùy chỉnh đồ thị và biểu đồ, là lựa chọn hàng đầu trong cộng đồng Python cho công việc trực quan hóa dữ liệu.

2.1.3 Môi trường làm việc

Môi trường làm việc trong Python rất đa dạng và linh hoạt Dưới đây là một số môi trường phổ biến:

PyCharm IDE:

PyCharm là một môi trường phát triển tích hợp (IDE) phổ biến nhất cho Python.

Trang 14

Nó cung cấp nhiều tính năng như tự động hoàn thành và kiểm tra mã, xử lý lỗi và sửa lỗi nhanh chóng, hỗ trợ các framework web như Django và Flask.Colab:

Colab cho phép viết và thực thi mã Python trực tiếp trong trình duyệt với nhiều tính năng tiện ích.

Python Virtual Environment:

Python Virtual Environment (môi trường ảo Python) cho phép tạo ra các môitrường làm việc cô lập để quản lý các gói và framework cho các dự án Python khác nhau.

Visual Studio Code:

VS Code cung cấp nhiều tính năng hiệu quả như hỗ trợ biên tập, debug, tíchhợp Git, và tùy chỉnh cao.

Nó hỗ trợ nhiều ngôn ngữ lập trình và cung cấp các extension mạnh mẽ nhưHTML Snippets, CSS Peek, và Live Server cho phát triển web.

2.2 Trình bày các bước thực hiện câu 1a, 1b, 1c2.2.1 Trình bày các bước thực hiện câu 1aBước 1: Import thư viện

importsympy asspimportmatplotlib pyplot aspltimportnumpy asnpimportmath

hiện các phép toán họcBước 2: Gán giá trị cho biến A A=60

Vì giá trị A nằm trong khoảng từ 10 đến 99 nên chọn số A thủ công: A lấy giá trị là60

Bước 3: Tạo mảng giá trị gán vào biến xx=np.linspace(1500 1500 40, , )

Trang 15

Hàm np.linspace(-1500, 1500, 40) dùng để tạo một mảng các giá trị gồm 40 phầntử, bắt đầu từ -1500 và kết thúc tại 1500 Nhằm tạo ra một dãy giá trị để tính toán vàvẽ đồ thị của hàm số.

Bước 4: Định nghĩa 2 hàm f(x), g(x); tính toán giá trị y tương ứngdeff( ):x

\ \ returnx**2-2A*-A**2

defg( ):x

\ \ return- **x2 4* *Ax A**3

y1=f( )xy2=g( )x

-Định nghĩa 2 hàm số f(x) và g(x)

-Sau khi định nghĩa hai hàm f(x) và g(x), tính toán các giá trị của y1,y2 cho f(x) vàg(x) bằng cách sử dụng mảng giá trị x đã cho

Bước 5: Vẽ đồ thị f(x), g(x)

plt.plot(xy1, 'red', label='f(x)=x^2- 2Ax -A^2')plt.plot(xy2, 'blue', label='g(x)= -x^2 + 4Ax +A^3')

Hai dòng code này dùng để vẽ đồ thị của f(x) và g(x) trên cùng 1 đồ thị

Dòng 1: plt.plot(x, y1, 'red', label='f(x)=x^2- 2Ax -A^2') dùng để vẽ đồ thịf(x) bằng màu đỏ và hiển thị nhãn là f(x)=x^2- 2Ax -A^2

Dòng 2: plt.plot(x, y2, 'blue', label='g(x)= -x^2 + 4Ax +A^3') dùng để vẽ đồthị g(x) bằng màu xanh và hiện thị nhãn là 'g(x)= -x^2 + 4Ax +A^3'Bước 6: Tìm điểm giao của hai hàm

x_m =sp.symbols('x')f_x x_m =** -2 2A*x_m -A**2

g_x = -x_m**2+4* *Ax_m+ **A3

x_roots =sp.solve((g_x) (f_x) x_m -, )

Dòng 1: Tạo một biến có kí hiệu là x_m

Dòng 2: Hàm f_x được định nghĩa : x_m**2 - 2*A*x_m - A**2 cũng chínhlà f(x)

Trang 16

Bước 7: Vẽ các điểm giao nhau và in ra tọa độ của chúngdem =

forroot inx_roots:\ \ y_root=froot)

\ \ plt.plot(root y_root, , 'go', label='Giao điề m' ifdem==1else''

\ \ print("1a Giao điề m {dem} {: (float(root)} {, float(y_root)})")\ \ dem+=1

Mỗi lần lặp, chúng ta lấy một giá trị root từ danh sách x_roots, sau đó tínhgiá trị y tương ứng với điểm giao nhau bằng cách đưa giá trị root vào hàm sốf(x) ‘y_root = f(root)’

là lần lặp đầu tiên (với dem == 1), chúng ta sẽ thêm chú thích "Giao điểm"vào điểm đó Điều này giúp tránh chú thích nhiều lần khi có nhiều điểm giao

Cuối cùng, chúng ta in ra tọa độ cụ thể của điểm giao nhau thứ 1 và thứ 2 :print(f"1a Giao điểm {dem}: ({float(root)}, {float(y_root)})") Sử dụng floatđể in ra số thực.

Biến dem được tăng lên sau mỗi lần lặp để đếm số lần lặp và quản lý chúthích trên đồ thị

Bước 8: Thêm tiêu đề, nhãn trục, chú thích và lưới cho đồ thịplt.title('Cấu 1a')

Dòng 1: Thêm tiêu đề cho đồ thị là ‘Câu 1a’

Dòng 2,3 : Đặt tên cho trục x là ‘x’, đặt tên cho trục y là ‘y’Dòng 4: Dùng để thêm chú thích vào đồ thị

Dòng 5: Dùng để vẽ lưới

Trang 17

Bước 4: Viết phương trình tiếp tuyếnx_0 =

y_0 = -A**2

f_dhb1=sp.diff( , fxx)hsgoc f_dhb1=.subs(xx_0)ttuyen hsgoc=* ( x x_0-) +y_0

Dòng 1, 2: Gán giá trị cho x0, y0 Với x0=0, y0=-A^2Dòng 3: ‘f_dhb1 = sp.diff(fx, x)’ dùng để tính đạo hàm f’(x)

điểm x_0 cũng chính là hệ số góc của tiếp tuyến (y’(x0))

với dạng y=y’(x0)(x-x0)+y0Bước 5: Tạo mảng giá trị x cho đồ thịx_gtri=np.linspace(1500 1500 40, , )

Hàm np.linspace(-1500, 1500, 40) dùng để tạo một mảng các giá trị gồm 40 phầntử, bắt đầu từ -1500 và kết thúc tại 1500 Nhằm tạo ra một dãy giá trị để tính toán vàvẽ đồ thị của hàm số.

Bước 6: Tính giá trị y tương ứng với mỗi giá trị x của f(x) và tiếp tuyếnf_gtri= [ subs( , fxx val) forvalinx_gtri]

Trang 18

Dòng 1 plt.plot(x_gtri, f_gtri, 'blue', label='f(x)= x^2- 2Ax -A^2'): dùng để

Dòng 2 plt.plot(x_gtri, ttuyen_gtri, 'orange', label='Tiếp tuyến T'): dùng để

Dòng 3 plt.plot(x_0, y_0, 'go'): dùng để vẽ giao điểm của f(x) và tiếp tuyếnT Điểm này được đánh dấu bằng màu xanh lá cây ‘go’

Bước 8: Dịch chuyển đồ thị f(x) ban đầu xuống 4A^3 đơn vịdich_chuyen fx = -4A**3

Đồ thị mới chính là lấy đồ thị f(x) ban đầu trừ cho 4A^3 : ‘fx - 4 * A**3’Bước 9: Tính giá trị giá trị y cho hàm số đã dịch chuyển tại mỗi giá trị x trongmảng và vẽ đồ thị f(x) dịch chuyển

y_dich_chuyen= [dich_chuyen.subs(xval) forvalinx_gtri]plt.plot(x_gtri, y_dich_chuyen, 'red', label='f(x) dịch chuyề n')

Dòng 1: tính giá trị y cho hàm số đã dịch chuyển tại từng điểm x trong mảngx_gtri

Dòng 2: Vẽ đồ thị của hàm số đã dịch chuyển bằng cách sử dụng giá trị x, y

đỏ ‘red’ và được chú thích là 'f(x) dịch chuyển'.Bước 10: Giải phương trình f(x) dịch chuyển −T=0x_root=sp.solve(dich_chuyen ttuyen -, )

y_root= [ttuyen.subs( , x root) forrootinx_root]

Dòng 1: x_root = sp.solve(dich_chuyen - ttuyen, x) sử dụng hàm sp.solve để giải phương trình ‘dich_chuyen - ttuyen = 0’ chính là phương trình f(x) dịch chuyển −T=0 Nhằm tìm tọa độ x của các điểm giao nhau giữa f(x) dịch chuyển và đường tiếp tuyến T

Dòng 2: tính toán tọa độ y tương ứng của các điểm giao nhau bằng cách thay thế từng tọa độ x (gốc) vào phương trình của đường tiếp tuyến

Trang 19

Bước 11: Vẽ điểm giao nhau của đồ thị f(x) dịch chuyển và tiếp tuyến T và in ra tọađộ của các giao điểm đó

for in irange(len(y_root)):

\ \ plt.plot(float(x_root[]), float(y_root i[]), 'yo')\ \ print("1b Giao điề m {i+1} {: (float(x_root i[ ])}, {float(y_root i[ ])})")

Dòng 1: Sử dụng vòng lặp để lặp qua từng điểm giao nhau trong danh sách ‘y_root’, là danh sách chứa giá trị y của các điểm giao nhau

Dòng 2: ‘ plt.plot(float(x_root[i]), float(y_root[i]), 'yo')’ dùng để đánh dấu các điểm giao nhau giữa đồ thị f(x) dịch chuyển và tiếp tuyến T Các giao điểm đó được đánh dấu bằng chấm màu vàng ‘yo’

Dòng 3: In ra tọa độ giao điểm thứ nhất và thứ hai, sử dụng float để đảm bảo in ra là kiểu số thực

Bước 12: Thêm tiêu đề, nhãn trục, chú thích và lưới cho đồ thịplt.title('Cấu 1b')

Dòng 1: Thêm tiêu đề cho đồ thị là ‘Câu 1b’

Dòng 2,3 : Đặt tên cho trục x là ‘x’, đặt tên cho trục y là ‘y’Dòng 4: Dùng để thêm chú thích vào đồ thị

Dòng 5: Dùng để vẽ lướiDòng 6: Hiển thị đồ thị

2.2.3 Trình bày các bước thực hiện câu 1cBước 1: Gán giá trị cho biến A

Ngày đăng: 07/05/2024, 21:51

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

TÀI LIỆU LIÊN QUAN