ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO BÀI TẬP LỚN MÔN GIẢI TÍCH 2 Đề tài: Tìm giá trị lớn nhất và giá trị nhỏ nhất của fx;y trên miền tam giác NHÓM
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
BÁO CÁO BÀI TẬP LỚN MÔN GIẢI TÍCH 2
Đề tài: Tìm giá trị lớn nhất và giá trị nhỏ
nhất của f(x;y) trên miền tam giác
NHÓM L01_07 GVHD: Trần Ngọc Diễm
TP HCM, 05-2023
Trang 2DANH SÁCH CÁC THÀNH VIÊN
1 2213672 LƯƠNG TRẦN MINH TRỌNG
2 2210317 NGUYỄN KHÁNH BÌNH
3 2210337 TRƯƠNG QUỐC BÌNH
4 1812909 NGUYỄN HỮU HOÀNG LONG
5 2213649 NGUYỄN MINH TRÍ
6 2214047 NGUYỄN TƯỜNG VY
Trang 3NHẬN XÉT CỦA GVHD
Trang 4MỤC LỤC
LỜI MỞ ĐẦU 4
PHẦN 1: ĐỀ TÀI 5
PHẦN 2: HƯỚNG ĐI THỰC HIỆN ĐỀ TÀI 6
PHẦN 3: PHƯƠNG PHÁP GIẢI BÀI TOÁN 7
I CƠ SỞ LÝ THUYẾT 7
II CÁC VÍ DỤ 8
PHẦN 4: CHƯƠNG TRÌNH PYTHON 11
I GIỚI THIỆU PYTHON 11
1 Giới thiệu 11
2 Đặc tính 11
3 Ứng dụng 11
II ÁP DỤNG PYTHON VÀO ĐỀ TÀI 11
1 Đoạn code được sử dụng 11
2 Giải thích chức năng các hàm trong các dòng code 12
3 Ví dụ cụ thể 14
TỔNG KẾT 18
Trang 5LỜI MỞ ĐẦU
Nhóm em xin gửi lời cảm ơn sâu sắc đối với các thầy cô bộ môn Giải tích 2 của trường Đại học Bách Khoa TPHCM đã tạo điều kiện cho chúng em được tìm hiểu cũng như là hiểu biết thêm những kiến thức mới trong quá trình thực hiện Bài tập lớn môn Giải tích
2 này
Ngoài ra, nhóm chúng em xin gửi đến cô Trần Ngọc Diễm và cô Lê Nguyễn Hạnh Vy lời chào và lời chúc sức khoẻ Chúng em chân thành cảm ơn các cô đã trang bị cho chúng em những kiến thức cơ bản và nhiệt tình hướng dẫn để nhóm em có thể hoàn thành đề tài được giao một cách tốt nhất
Trong quá trình làm việc nhóm để hoàn thành bài tập lớn này, chúng em vẫn còn nhiều thiếu sót trong quá trình tìm hiểu, đánh giá và trình bày để tài Chúng em rất mong nhận được sự quan tâm, góp ý của cô để chúng em có thể học hỏi thêm, tích lũy thêm kinh nghiệm và kiến thức để có thể làm tốt hơn trong những bài báo cáo lần sau
Nhóm L01_07 xin chân thành cảm ơn!
Trang 6PHẦN 1: ĐỀ TÀI
Tìm giá trị lớn nhất và giá trị nhỏ nhất của f(x, y) trên miền tam giác
1 Yêu cầu: Viết một code (tùy chọn ứng dụng/ phần mềm) tìm giá trị lớn nhất, giá
trị nhỏ nhất của một hàm số f(x, y) liên tục trên miền tam giác ABC (cho phép người dùng nhập f(x, y) và tọa độ các đỉnh tam giác) Vẽ đồ thị phần mặt cong có hình chiếu là tam giác ABC, đánh dấu các điểm cao nhất và thấp nhất
2 Nội dung báo cáo:
(a) Trình bày hướng đi và phần mềm để thực hiện yêu cầu của đề tài
(b) Trình bày thuật toán
(c) Đoạn code
(d) Các ví dụ
Trang 7PHẦN 2: HƯỚNG ĐI THỰC HIỆN ĐỀ TÀI
- Xác định yêu cầu chính của đề tài: Tìm giá trị lớn nhất, giá trị nhỏ nhất của một
hàm số f(x, y) liên tục trên miền tam giác ABC (cho phép người dùng nhập f(x, y)
và tọa độ các đỉnh tam giác) Vẽ đồ thị phần mặt cong có hình chiếu là tam giác ABC, đánh dấu các điểm cao nhất và thấp nhất
- Trình bày cơ sở lý thuyết của đề tài: Đưa ra phương pháp tìm GTLN, GTNN của
một hàm số liên tục tùy ý trên một miền tam giác ABC với tọa độ các đỉnh tam giác cho trước
- Giới thiệu phần mềm/ứng dụng sẽ dùng cho đề tài : Sử dụng phần mềm Python
- Sử dụng Python vào yêu cầu của đề tài : Từ cơ sở lý thuyết đã trình bày, thực
hiện các thao tác lệnh có sẵn trong Python sao cho phù hợp với đề tài
- Kiểm tra các thao tác, các câu lệnh : Thử lệnh bằng các ví dụ cụ thể
- Kết luận kết thúc bài báo cáo
Trang 8PHẦN 3: PHƯƠNG PHÁP GIẢI BÀI TOÁN
I CƠ SỞ LÝ THUYẾT
➢ Đối với miền D tổng quát
Để tìm GTLN, GTNN của hàm f(x; y) liên tục trên miền D ta thực hiện các bước sau: B1 Tìm điểm dừng nằm bên trong miền D Tính giá trị của hàm f(x; y) tại những điểm này
B2 Tìm điểm dừng của hàm f(x; y) trên biên của miền D Tính giá trị của hàm f(x; y) tại những điểm này
B3 So sánh giá trị của hàm f(x; y) tại những điểm dừng vừa tìm được để xác định GTLN, GTNN
➢ Đối với miền D là tam giác ABC
Để tìm GTLN, GTNN của hàm f(x; y) liên tục trên miền tam giác ABC với A(xA; yA), B(xB; yB), C(xC; yC) ta thực hiện các bước sau:
B1 Tìm các điểm dừng nằm bên trong tam giác ABC, cụ thể:
- Tính đạo hàm riêng theo x và y đối với hàm f(x; y)
- Tìm các cực trị bằng cách giải hệ phương trình đạo hàm riêng bằng 0
{𝑓𝑥 = ⋯ = 0
𝑓𝑦 = ⋯ = 0→ {
𝑥 =
𝑦 = B2 Xác định điều kiện để nhận những điểm nằm bên trong tam giác ABC
- Ta có thể sử dụng phương pháp hình học - vẽ miền tam giác lên mặt phẳng tọa
độ Oxy và xác định vị trí của (x; y) hoặc sử dụng điều kiện của đề (nếu có)
- Sau đó tính giá trị của hàm f(x; y) tại những điểm này
B3 Tìm các điểm đặc biệt nằm trên biên của tam giác ABC, cụ thể
- Biên tam giác là các đoạn thẳng AB, BC, AC nên sẽ đưa về hàm 1 biến 𝑓(𝑥) hoặc 𝑔(𝑦) với các điều kiện trên từng biên
- Xét trên từng biên, cho 𝑓′(𝑥) = 0 hoặc 𝑔′(𝑦) = 0 để tìm ra tập nghiệm
- Tính giá trị của hàm f(x; y) tại những điểm này
B4 Tính giá trị của hàm f(x; y) tại các đỉnh A(xA; yA), B(xB; yB), C(xC; yC)
B5 So sánh và kết luận các giá trị của hàm f(x; y) vừa tính được để tìm ra GTLN,
GTNN
Trang 9II CÁC VÍ DỤ
VD1: Tìm GTLN, GTNN của 𝑓(𝑥; 𝑦) = 𝑥𝑦 − 𝑥 trên miền tam giác ABC với các đỉnh A(0; 0) , B(2; 1) , C(3; 2)
Hướng dẫn giải
B1 Tìm điểm dừng nằm bên trong tam giác ABC:
{𝑓𝑓𝑥 = 𝑦 − 1 = 0
𝑦 = 𝑥 = 0↔ {
𝑥 = 0
𝑦 = 1
B2 Xác định điều kiện:
- Với các tọa độ của tam giác ABC, ta có thể vẽ tam giác trên mặt phẳng tọa độ và xác định vị trí của điểm (0; 1)
- Khi vẽ lên, ta sẽ thấy rằng điểm (0; 1) nằm bên ngoài miền tam giác ABC nên loại tập nghiệm này
B3 Tìm các điểm đặc biệt nằm trên biên của tam giác ABC:
• (AB): 𝑦 = 𝑎𝑥 + 𝑏 qua A(0; 0) , B(2; 1)
⇒ (AB): { 𝑦 =
1
2𝑥
0 < 𝑥 < 2
⇒ 𝑓 =1
2𝑥2− 𝑥
⇒ 𝑓′ = 𝑥 − 1 = 0 ⇒ 𝑥 = 1 ⇒ 𝑦 =1
2
⇒ 𝒇 (𝟏;𝟏
𝟐) =−𝟏
𝟐
• (AC): 𝑦 = 𝑎𝑥 + 𝑏 qua A(0; 0) , C(3; 2)
⇒ (AC): { 𝑦 =
2
3𝑥
0 < 𝑥 < 3
⇒ 𝑓 =2
3𝑥2− 𝑥
⇒ 𝑓′ =4
3𝑥 − 1 = 0 ⇒ 𝑥 =3
4 ⇒ 𝑦 = 1
2
⇒ 𝒇 (𝟑
𝟒;𝟏
𝟐) = −𝟑
𝟖
• (BC): 𝑦 = 𝑎𝑥 + 𝑏 qua B(2; 1) , C(3; 2)
⇒ (BC): {𝑦 = 𝑥 − 1
2 < 𝑥 < 3
⇒ 𝑓 = 𝑥2− 2𝑥
⇒ 𝑓′ = 2𝑥 − 2 = 0 ⇒ 𝑥 = 1 (loại)
⇒ Không có điểm đặc biệt trên biên BC
Trang 10B4 Tính giá trị của hàm f(x; y) tại các đỉnh
• Tại A(0; 0) ⇒ 𝒇(𝑨) = 𝟎
• Tại B(2; 1) ⇒ 𝒇(𝑩) = 𝟎
• Tại C(3; 2) ⇒ 𝒇(𝑪) = 𝟑
B5 So sánh và kết luận
GTLN của f(x; y) là 3 tại C(3; 2)
GTNN của f(x; y) là −𝟏
𝟐 tại điểm (1;1
2)
VD2: Tìm GTLN, GTNN của 𝑓(𝑥; 𝑦) = 3𝑥𝑦 − 6𝑥 − 3𝑦 + 7 trên miền tam giác ABC với các đỉnh A(0; 0) , B(3; 0) , C(0; 5)
Hướng dẫn giải
B1 Tìm điểm dừng nằm bên trong tam giác ABC:
{𝑓𝑓𝑥 = 3𝑦 − 6 = 0
𝑦 = 3𝑥 − 3 = 0↔ {
𝑥 = 1
𝑦 = 2
B2 Xác định điều kiện:
- Với các tọa độ của tam giác ABC, ta có thể vẽ tam giác trên mặt phẳng tọa độ và xác định vị trí của điểm (1; 2)
- Khi vẽ lên, ta sẽ thấy rằng điểm (1; 2) nằm bên trong miền tam giác ABC nên nhận tập nghiệm này
⇒ 𝒇(𝟏; 𝟐) = 𝟏
B3 Tìm các điểm đặc biệt nằm trên biên của tam giác ABC:
• (AB): { 𝑦 = 0
0 < 𝑥 < 3
⇒ 𝑓(𝑥; 0) = −6𝑥 + 7
⇒ 𝑓′(𝑥; 0) = −6 ≠ 0
⇒ Hàm số không có điểm đặc biệt nằm trên biên AB
• (AC): {0 < 𝑦 < 5𝑥 = 0
⇒ 𝑓(0; 𝑦) = −3𝑦 + 7
⇒ 𝑓′(0; 𝑦) = −3 ≠ 0
⇒ Hàm số không có điểm đặc biệt nằm trên biên AC
Trang 11• (BC): 𝑦 = 𝑎𝑥 + 𝑏 qua B(3; 0) , C(0; 5)
⇒ (BC): {𝑦 =
−5
3 𝑥 + 5
0 < 𝑥 < 3
⇒ 𝑓 = 3𝑥(−5
3 𝑥 + 5) − 6𝑥 − 3(−5
3 𝑥 + 5) + 7
⇒𝑓 = −5𝑥2+ 14𝑥 − 8
⇒ 𝑓′ = −10𝑥 + 14 = 0
⇒ 𝑥 =7
5 (nhận) ⇒ 𝑦 = 8
3
⇒ 𝒇 (𝟕
𝟓;𝟖
𝟑) = 𝟗
𝟓
B4 Tính giá trị của hàm f(x; y) tại các đỉnh
• Tại A(0; 0) ⇒ 𝒇(𝑨) = 𝟕
• Tại B(3; 0) ⇒ 𝒇(𝑩) = −𝟏𝟏
• Tại C(0; 5) ⇒ 𝒇(𝑪) = −𝟖
B5 So sánh và kết luận
GTLN của f(x; y) là 7 tại A(0; 0)
GTNN của f(x; y) là -11 tại B(3; 0)
Trang 12PHẦN 4: CHƯƠNG TRÌNH PYTHON
I GIỚI THIỆU PYTHON
1 Giới thiệu
- Python đượ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
- Python là một ngôn ngữ lập trình bậc cao, mã nguồn mở và đa nền tảng Bất kỳ ai cũng có thể tải xuống miễn phí từ trang chủ và sử dụng nó để phát triển các
chương trình
- 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 Vì vậy nó trở thành một trong những ngôn ngữ lập trình phổ biến nhất
2 Đặc tính
ra lỗi trong đoạn mã
đối tượng
- Ngôn ngữ lập trình tương tác: Người dùng có thể tương tác trực tiếp với trình
thông dịch python để viết chương trình
này cũng làm cho nó trở nên phổ biến
diện
- Có thể cải tiến: Python cung cấp một cấu trúc cải tiến để hỗ trợ các chương trình
lớn sau đó là shell-script
3 Ứng dụng
Python được sử dụng để xây dựng các phần mềm và web, tự động hóa các tác vụ và tiến hành phân tích dữ liệu, khoa học và tính toán…
II ÁP DỤNG PYTHON VÀO ĐỀ TÀI
1 Đoạn code được sử dụng
Trang 13Hình 1
2 Giải thích chức năng các hàm trong các dòng code
➢ import numpy as np: import thư viện NumPy với tên np, cho phép thao tác trên
các mảng và ma trận số học trong Python
➢ import matplotlib.pyplot as plt: import thư viện Matplotlib với tên là plt, cho
phép vẽ đồ thị trong Python
➢ from mpl_toolkits.mplot3d import Axes3D: import module Axes3D từ
mpl_toolkits.mplot3d, cho phép vẽ đồ thị 3 chiều trong Matplotlib
➢ A = np.array([float(i) for i in input("Nhập tọa độ của đỉnh A, cách nhau bởi
dấu phẩy: ").split(',')]): nhập tọa độ của điểm A từ người dùng và lưu trữ chúng
trong một mảng NumPy, sử dụng phương thức split() để tách các tọa độ được
nhập bằng dấu phẩy thành một danh sách, sau đó sử dụng comprehension để lặp qua từng phần tử trong danh sách và chuyển đổi chúng thành số dấu phẩy động (float) (tương tự cho điểm B và điểm C)
➢ f_string = input("Nhập hàm số f(x, y): "): nhập hàm số f(x, y) từ người dùng
dưới dạng một chuỗi ký tự
Trang 14➢ def f(x, y): return eval(f_string): định nghĩa hàm số f(x, y) dưới dạng một hàm Python, trong đó hàm eval( ) được sử dụng để đánh giá chuỗi ký tự được nhập từ
người dùng và trả về giá trị của hàm số tại (x, y)
➢ vertices = np.vstack([A, B, C]): tạo một mảng NumPy chứa các tọa độ của đỉnh
tam giác ABC
➢ values = np.array([f(*vertex) for vertex in vertices]): tính giá trị của hàm số
f(x, y) tại các đỉnh tam giác ABC, lưu trữ chúng trong một mảng NumPy
➢ max_idx = np.argmax(values): tìm chỉ số của giá trị lớn nhất trong mảng values
➢ min_idx = np.argmin(values): tìm chỉ số của giá trị nhỏ nhất trong mảng values
➢ max_vertex = vertices[max_idx]: Tìm tọa độ của đỉnh tam giác có giá trị lớn
nhất
➢ min_vertex = vertices[min_idx]: Tìm tọa độ của đỉnh tam giác có giá trị nhỏ
nhất
➢ max_value = values[max_idx]: Dùng để lấy giá trị lớn nhất của hàm số f(x,y) trên miền tam giác ABC và lưu chúng vào biến max_value
➢ min_value = values[min_idx]: Dùng để lấy giá trị nhỏ nhất của hàm số f(x,y) trên miền tam giác ABC và lưu chúng vào biến min_value
➢ fig = plt.figure(): Dùng để tạo một đối tượng hình vẽ mới (figure)
➢ ax = fig.add_subplot(111, projection='3d'): Dùng để tạo một trục tọa độ 3 chiều
mới (subplot) và liên kết nó với hình vẽ (figure) đã tạo ở bước trên
➢ x = np.linspace(0, 2, 100) và y = np.linspace(0, 3, 100): tạo ra 100 giá trị được
phân bố đều trong khoảng từ 0 đến 2 cho x và 0 đến 3 cho y
➢ X, Y = np.meshgrid(x, y): tạo ra lưới 2 chiều bằng cách ghép các giá trị trong x
và y Cụ thể, mỗi phần tử của X sẽ được thay đổi giá trị từng dòng và giữ nguyên cột, và mỗi phần tử của Y sẽ được thay đổi giá trị từng cột và giữ nguyên dòng
➢ Z = f(X, Y): tính toán giá trị của hàm số f tại các điểm trên lưới (X, Y)
➢ ax.plot_trisurf(vertices[:, 0], vertices[:, 1], values, alpha=0.5): vẽ phần mặt
cong của hàm số f trên miền tam giác ABC bằng cách sử dụng tọa độ của các điểm đỉnh tam giác và giá trị của hàm số f tại các điểm đó Tham số alpha=0.5 chỉ định độ trong suốt của mặt cong
➢ ax.plot(max_vertex[0], max_vertex[1], max_value, marker='o',
markersize=10, color='r') và ax.plot(min_vertex[0], min_vertex[1],
min_value, marker='o', markersize=10, color='g'): vẽ hai điểm tại điểm cực trị
của hàm số f trên miền tam giác ABC Tham số marker='o' chỉ định loại marker (chấm tròn), markersize=10 chỉ định kích thước của marker, và color='r' hoặc color='g' chỉ định màu sắc của marker
➢ ax.set_xlabel('x'), ax.set_ylabel('y'), và ax.set_zlabel('z'): chỉ định nhãn trục x,
y, và z cho đồ thị
➢ plt.show(): hiển thị đồ thị trên màn hình
Trang 153 Ví dụ cụ thể
VD1: Viết một code (sử dụng phần mềm Python) tìm GTLN, GTNN của 𝑓(𝑥; 𝑦) =
𝑥2+ 𝑦2− 5 trên miền tam giác ABC với các đỉnh A(0; 0) , B(7; 0) , C(6; 8) Vẽ đồ thị phần mặt cong có hình chiếu là tam giác ABC, đánh dấu các điểm cao nhất và thấp nhất
Sử dụng các đoạn code vừa trình bày ở trên, ta có hình ảnh như sau:
Hình 2
Hình 3
Trang 16Đồ thị phần mặt cong có hình chiếu là tam giác ABC:
Hình 4
VD2: Viết một code (sử dụng phần mềm Python) tìm GTLN, GTNN của 𝑓(𝑥; 𝑦) =
𝑥3− 2𝑥2+ 3𝑥 − 5 − 𝑦 trên miền tam giác ABC với các đỉnh A(1; 2), B(8; 4), C(6; 8) Vẽ đồ thị phần mặt cong có hình chiếu là tam giác ABC, đánh dấu các điểm cao nhất và thấp nhất
Sử dụng các đoạn code vừa trình bày ở trên, ta có hình ảnh như sau:
Trang 17Hình 5
Hình 6
Đồ thị phần mặt cong có hình chiếu là tam giác ABC:
Trang 18Hình 7
Trang 19TỔNG KẾT
Nhóm đã hoàn thành yêu cầu của giảng viên về đề tài báo cáo Bài tập lớn Qua bài tập này, chúng em đã có cái nhìn mới về mối quan hệ giữa lý thuyết và thực tế trong bộ môn Giải tích 2 Không những thế, khi thực hiện đề tài này nhóm em cũng đã hiểu rõ hơn về cách tìm giá trị lớn nhất, giá trị nhỏ nhất của một hàm số liên tục và học thêm được những kiến thức mới về việc sử dụng phần mềm Python để vẽ đồ thị Tuy nhiên, bài báo cáo của nhóm vẫn còn thiếu sót một vài phần do hạn chế về kiến thức Cảm ơn mọi thành viên của nhóm đã luôn có tinh thần trách nhiệm cao trong công việc, cùng với đó là sự nỗ lực đoàn kết để hoàn thành nhiệm vụ được giao Cuối cùng xin chân thành cảm ơn cô đã giành thời gian quý báu của mình để đọc bài báo cáo của nhóm em