1. Trang chủ
  2. » Giáo án - Bài giảng

Thực hành Toán cao cấp - Chương 3: Đạo hàm và ứng dụng

23 49 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 1,91 MB

Nội dung

Thực hành Toán cao cấp - Chương 3: Đạo hàm và ứng dụng. Chương này cung cấp cho học viên những nội dung về: bổ túc kiến thức cơ bản Python; vẽ đồ thị; đạo hàm - xây dựng chương trình tính đạo hàm; đạo hàm và ứng dụng - tìm hiểu và ứng dụng phương pháp Gradient Ascent;... Mời các bạn cùng tham khảo!

Bộ mơn Khoa học Dữ liệu THỰC HÀNH TỐN CAO CẤP TÀI LIỆU PHỤC VỤ SINH VIÊN NGÀNH KHOA HỌC DỮ LIỆU Nhóm biên soạn: TS Hồng Lê Minh – Khưu Minh Cảnh – Hoàng Thị Kiều Anh – Lê Thị Ngọc Huyên – … TP.HCM – Năm 2019 Thực hành Tốn cao cấp - 2019 Trang Bộ mơn Khoa học Dữ liệu MỤC LỤC CHƯƠNG 3: ĐẠO HÀM VÀ ỨNG DỤNG Bổ túc kiến thức Python 1.1 Viết hàm/phương thức Python 1.2 Cơ chế bắt lỗi Python Vẽ đồ thị 2.1 Vẽ đồ thị chuyển động vật ném lên Đạo hàm: Xây dựng chương trình tính đạo hàm 14 Đạo hàm ứng dụng: Tìm hiểu ứng dụng phương pháp Gradient Ascent 18 BÀI TẬP CHƯƠNG 23 Thực hành Toán cao cấp - 2019 Trang Bộ môn Khoa học Dữ liệu CHƯƠNG 3: ĐẠO HÀM VÀ ỨNG DỤNG Mục tiêu: - Bổ túc lập trình Python: viết phương thức, chế bắt lỗi Python (30 phút) - Vẽ đồ thị tiếp theo: vẽ đồ thị theo công thức (30 phút) - Đạo hàm ứng dụng đạo hàm (90 phút) Nội dung chính: Bổ túc kiến thức Python 1.1 Viết hàm/phương thức Python Trong Python, hàm hay phương thức xử lý đơn giản khai báo thông qua từ khóa def với tên hàm kết trả từ khóa return Nếu trả nhiều giá trị giá trị cách dấu phẩy (,) Ví dụ: return masv, tensv trả biến mssv tensv Để bắt đầu, từ IDLE Anaconda, viết hàm việc mở tập tin Ví dụ: Hàm tính lũy thừa số nguyên 𝑥 sau dấu nhắc lệnh >>> IDLE Thực hành 1: Viết hàm từ dấu nhắc lệnh >>> trình IDLE >>> def luythua(x, n): ketqua= for i in range(n): ketqua = ketqua *x return ketqua >>> luythua(2,1) ………………………………………………………………  sinh viên điền kết >>> luythua(2,0) ………………………………………………………………  sinh viên điền kết Thực hành Toán cao cấp - 2019 Trang Bộ môn Khoa học Dữ liệu Lưu ý: Một số đặc điểm bật Python hàm:  Hàm “main” tập tin py: Là đoạn chương trình nằm khối lệnh, thường vị trí cuối tập tin py Khi khối lệnh tồn tại, “thực thi” tập tin Python từ dịng lệnh hệ điều hành, như: C:\> python abc.py Khối lệnh việc so sánh từ khóa riêng name main Python sau: if name == " main ": # thực đó… Chúng ta làm việc rõ hàm main phần sau chương 1.2 Cơ chế bắt lỗi Python Trong viết chương trình, khơng tính đến lỗi thuật tốn, hai loại lỗi xảy là: Thực hành 2: Lỗi chế bắt lỗi Python - Lỗi cú pháp (syntax errors) Ví dụ: viết dịng lệnh while thiếu dấu : điều kiện dòng lệnh while phải dấu “==” thay dấu “=” Ví dụ: >>> while = 2: ……………………………………………  Sinh viên điền lỗi vào - Ngoại lệ (exceptions): Ví dụ: mở tập tin khơng tồn tại, thực phép chia 0, thực phép cộng (operand type for +) theo thứ tự số + chuỗi phép nối (concatenate) theo thứ tự chuỗi + số Ví dụ: >>> 10 * (1/0) …………………………………………  Sinh viên ghi nhận lỗi >>> * bien_chua_khai_bao / …………………………………………  Sinh viên ghi nhận lỗi Thực hành Toán cao cấp - 2019 Trang Bộ môn Khoa học Dữ liệu >>> ‘ba’ + …………………………………………  Sinh viên ghi nhận lỗi >>> 10 * (1/0) …………………………………………  Sinh viên ghi nhận lỗi Tóm lại, ngoại lệ bên báo là: ZeroDivisionError, NameError TypeError Một ví dụ khác cho thấy việc tính tốn Python từ trái sang phải có ưu tiên phép tốn Thực hành: >>> 'ba' + (1/0) …………………………………………  Sinh viên ghi nhận lỗi >>> 'ba'+7+(1/0) …………………………………………  Sinh viên ghi nhận lỗi Phương pháp xử lý: Đối với lỗi cú pháp (syntax error), phải kiểm tra lại câu lệnh sửa Đối với lỗi ngoại lệ (exception) phải xử lý hạn chế chế thơng báo để tránh trường hợp chương trình bị kết thúc bất ngờ Thực hành 3: Xử lý ngoại lệ với chế try… except  Sử dụng chế try… except… để xử lý lỗi: >>> x = int(input(“Vui long nhap so: ”)) Vui long nhap so: a Sinh viên điền tên ngoại lệ:……………………………………… >>> while True: try: x = int(input(“Vui long nhap so: ”)) break except ……………… : Thực hành Toán cao cấp - 2019 Trang Bộ môn Khoa học Dữ liệu print (‘Vui long nhap so Khong nhap chu!’) Cơ chế try… except có cấu trúc else: Thực hành 4: Xử lý ngoại lệ với chế try… except… else… finally Cơ chế else try except để thực tiếp lệnh try khơng có lỗi/ngoại lệ xảy Lưu ý 1: Nếu except mà không lỗi/ngoại lệ xem bắt tất lỗi ngoại lệ Lưu ý 2: Nếu có thêm finally để xử lý tiếp câu lệnh lại Thường thông báo để người sử dụng biết kết thúc chương trình Ví dụ: >>> while True: try: x = int(input('Vui long nhap so: ')) except: print ('So vua nhap sai') else: print ('so vua nhap la ' + str(x)) break finally: print ('Da hoan chuong trinh') Sinh viên thử nghiệm nhập chữ a Rồi Enter nhập số Thực hành Toán cao cấp - 2019 Trang Bộ môn Khoa học Dữ liệu Vẽ đồ thị 2.1 Vẽ đồ thị chuyển động vật ném lên Trong mục này, làm quen với tốn ném bóng theo dõi quỹ đạo (như hình mơ tả bên dưới) Trong hình trên, bóng ném từ điểm A rơi xuống điểm B Đây dạng quỹ đạo đạn đại bác vật thể ném lên Mục tiêu sử dụng phương trình đạn đạo để vẽ đồ thị vật thể bay cho thấy vị trí bóng từ lúc ném đến chạm vào điểm B Khi ném bóng, xác định vận tốc hướng ban đầu bóng Hướng bay góc tạo mặt đất vector hướng bóng Ta gọi đại lượng vận tốc 𝑢 góc 𝜃 (đọc theta) (như hình) Quả bóng gồm thành phần vận tốc: dọc theo trục 𝑥 tính theo cơng thức 𝑢 = 𝑢𝑐𝑜𝑠𝜃 dọc theo trục y 𝑢 = 𝑢𝑠𝑖𝑛𝜃 Khi bóng bay, vận tốc thay đổi thể thay đổi vận tốc giá trị 𝑣, với hai thành phần ngang 𝑣 chiều dọc 𝑣 Để đơn giản, giả định thành phần 𝑣 khơng thay đổi suốt q trình bay vật thể Trong đó, thành phần 𝑣 bị tác động trọng trường theo phương trình 𝑣 = 𝑢 − 𝑔𝑡 Trong phương trình này, 𝑔 gia tốc trọng trường 𝑡 thời gian mà vận tốc đo Vì 𝑢 = 𝑢𝑠𝑖𝑛𝜃 nên ta thay thế: 𝑣 = 𝑢𝑠𝑖𝑛𝜃 − 𝑔𝑡 Vì thành phần ngang vận tốc xem không đổi, đó, thành phần ngang khoảng 𝑆 = 𝑢(𝑐𝑜𝑠𝜃)𝑡 Thành phần theo chiều đứng có vận tốc thay đổi đó, khoảng cách di chuyển cho công thức: 𝑆 = 𝑢(𝑠𝑖𝑛𝜃)𝑡 − 𝑔𝑡 Thực hành Toán cao cấp - 2019 Trang Bộ mơn Khoa học Dữ liệu Nói cách khác, 𝑆 𝑆 cho tọa độ bóng thời điểm bay Chúng ta sử dụng phương trình để vẽ quỹ đạo Theo đó, sử dụng phương trình với đại lượng tính sau: thời gian 𝑡 tính giây, vận tốc tính 𝑚⁄ , góc chiếu ban đầu 𝜃 theo đơn vị độ gia tốc trọng trường thể 𝑚 𝑠 𝑠 Tuy nhiên, trước viết chương trình, cần tìm khoảng thời gian bóng bay trước tiếp đất để vẽ quỹ đạo bóng Để làm việc này, đầu tiên, tìm tính điểm cao bóng, đó, vận tốc bóng theo chiều y (𝑣 ) Nghĩa ta có phương trình tốn 𝑣 = 𝑢𝑠𝑖𝑛𝜃 − 𝑔𝑡 = Từ đó, tìm nghiệm 𝑡 sau: 𝑡= 𝑢𝑠𝑖𝑛𝜃 𝑔 Ta gọi thời điểm thời điểm đỉnh 𝑡_peak Sau đến vị trí cao nhất, bóng cần số thời gian lúc bóng rơi xuống nơi Khi đó, ta có tổng thời gian bay là: 𝑡 = 2𝑡 =2× 𝑢𝑠𝑖𝑛(𝜃) 𝑔 Với giả định vận tốc ban đầu 5m/giây góc bay 90 độ Khi đó, việc tính thời gian cách thay giá trị 𝑢 = 5, 𝜃 = 45𝜃 Và thay số vào phương trình trên, ta được: 𝑡 = 2𝑡 =2× 5𝑠𝑖𝑛(45 ) 9.8 Trong trường hợp này, thời gian bay khơng bóng 0.7251 giây (làm trịn đến trường số số thập phân) Quả bóng khơng trung thời gian Do đó, để vẽ quỹ đạo, tính tọa độ x y theo khoảng thời gian Câu hỏi đặt tính tọa độ nào? Một cách lý tưởng, tính tọa độ Trong phần này, tính tọa độ cho 0.001 giây 2.1.1 Phát sinh dãy số số thực Hàm range() để phát sinh dãy số nguyên Nghĩa ta muốn liệt kê số nguyên 10, số đơn vị sử dụng lệnh range(1, 10, 2) Tuy nhiên, với số thực, giả định: muốn phát sinh số từ đến 0.32 với khoảng cách 0.02 Nghĩa phải tạo số: 0.00, 0.02, 0.04, 0.06, 0.08,…, 0.28, 0.30, 0.32 Khi đó, phải thực lệnh lặp để tạo dãy, sau: Thực hành 5: Tạo hàm phát sinh dãy số thực >>> def frange(batdau, ketthuc, buocnhay): Thực hành Tốn cao cấp - 2019 Trang Bộ mơn Khoa học Dữ liệu day_ketqua = [] while batdau < ketthuc: day_ketqua.append(batdau) batdau = batdau + buocnhay return day_ketqua Sau xây dựng hàm frange, sử dụng Ví dụ: để tạo dãy số từ đến với bước nhảy 0.2: 2.1.2 Vẽ quỹ đạo bay vật ném lên Chương trình vẽ bóng bay với vận tốc gốc ban đầu cho Lưu ý: hai tham số nhập chương trình Thực hành 6: Vẽ quỹ đạo bay vật ném lên Chúng ta thực tạo tập tin đưa vào đoạn mã sau: Phân đoạn 1: Nhập thư viện xử lý: >>> from matplotlib import pyplot as plt >>> import math Phân đoạn 2: Xây dựng hàm xử lý: + Hàm 1: Hàm vẽ đồ thị def draw_graph(x, y): plt.plot(x, y) plt.xlabel('Truc X') plt.ylabel('Truc Y') plt.title('Do thi bai toan nem qua bong') Thực hành Toán cao cấp - 2019 Trang Bộ môn Khoa học Dữ liệu + Hàm 2: Hàm xử lý tạo khoảng số thực def frange(start, final, interval): numbers = [] while start < final: numbers.append(start) start = start + interval return numbers + Hàm 3: Hàm tính tốn dãy X Y để vẽ đồ thị tương ứng với hàm đạn đạo: def draw_trajectory(u, theta): # Gia toc truong g = 9.8 # Goc bay: theta = math.radians(theta) # Thoi gian bay: t_flight = 2*u*math.sin(theta)/g # Tinh toan khoang cach thoi gian intervals = frange(0, t_flight, 0.001) # Danh sach toa x va y x = [] y = [] for t in intervals: x.append(u*math.cos(theta)*t) y.append(u*math.sin(theta)*t - 0.5*g*t*t) draw_graph(x, y) Thực hành Toán cao cấp - 2019 Trang 10 Bộ môn Khoa học Dữ liệu Phân đoạn 3: Xây dựng hàm main if name == ' main ': try: u = float(input('Nhap van toc ban dau (m/s): ')) theta = float(input('Nhap goc bay (degrees): ')) except ValueError: print (' Nhap cac gia tri sai! ') else: draw_trajectory(u, theta) plt.show() finally: print ('Hoan chuong trinh!') Trong đoạn lệnh này, sử dụng chế bắt lỗi try except Python để loại trừ sai sót cố ý nhập khơng phải số Việc nhập số hàm input xử lý chuyển sang số thực hàm float() để tính tốn vẽ đồ thị Sau hồn thành, chương trình kết thúc in ‘Hoan chuong trinh!’ Sau lưu tập tin thực thực thi cách nhấn F5 vào menu Run  Run Module (trên môi trường IDLE) Sau nhập thông số, chương trình vẽ đồ thị: Thực hành Tốn cao cấp - 2019 Trang 11 Bộ môn Khoa học Dữ liệu Trên đồ thị vật thể ném lên với vận tốc ban đầu 25m/s góc hướng lên 60 độ 2.1.3 Vẽ nhiều đồ thị với vận tốc ban đầu khác Trong chương trình bên trên, thực thử nghiệm Chúng ta điều chỉnh chương trình để thể nhiều tốc độ ban đầu: Thực hành 7: Vẽ nhiều quỹ đạo đồ thị Cụ thể thay đổi hàm main, nghĩa phân đoạn chương trình bên trên: if name == ' main ': # Danh sach cac toc ban dau khac ds_vantoc = [20, 40, 60] goc_bandau = 45 # 45 for v in ds_vantoc: draw_trajectory(v, goc_bandau) # Tao chu dan thi: chudan = [] Thực hành Toán cao cấp - 2019 Trang 12 Bộ môn Khoa học Dữ liệu for i in ds_vantoc: chudan.append(str(i)) # Xem chu dan duoc tao: print ("Chu dan duoc tao la: ") print (chudan) # Them chu dan vao thi plt.legend(chudan) # Hien thi thi: plt.show() Kết thực đồ thị giá trị vận tốc ban đầu thể hình IDLE: Thực hành Tốn cao cấp - 2019 Trang 13 Bộ môn Khoa học Dữ liệu Đạo hàm: Xây dựng chương trình tính đạo hàm Việc viết hàm số lượng giác sin(), cos() cần thể tên thư viện sympy gây bất lợi ứng dụng tính tốn mà người sử dụng khơng biết đến gói SymPy Do đó, bây giờ, tìm cách viết chương trình máy tính để tính tốn đạo hàm hàm số theo biến với ưu việt Tất nhiên, phần lõi chương trình phần triệu gọi Derivative cho hàm f theo biến thực tính tốn phương thức doit() Trong khung cửa sổ soạn thảo (bằng cách vài menu File  New File), viết hàm tinh_daoham sau: Thực hành 8: Xây dựng chương trình tính đạo hàm Đoạn mã: ''' Chuong trinh tinh toan dao ham ''' from sympy import Symbol, Derivative, sympify, pprint def tinh_daoham(ham_f, bien): bien = Symbol(bien) d = Derivative(ham_f, bien).doit() pprint(d) Thực hành Toán cao cấp - 2019 Trang 14 Bộ môn Khoa học Dữ liệu Khi chưa lưu, tên cửa sổ *Untitled* Chúng ta lưu vào đĩa D với tên tập tin tinh_daoham.py Sau lưu vào đĩa, vào menu Run  Run Module nhấn F5 để sử dụng hàm trên: Khi nhấn F5 để chạy, dấu nhắc RESTART sau: Khi đó, thử nghiệm việc thực thi hàm tinh_daoham với tham số hàm nhập chuỗi (kí tự) sau: Lưu ý: Python, chuỗi kí tự đặt dấu nháy đơn ‘’ nháykép “” >>> tinh_daoham('x**3+x**2+x', 'x') …………………………………………………  Sinh viên điền kết Rõ ràng, với chương trình này, thấy khác biệt với câu lệnh thô sơ Với chương trình này, ngồi việc tính tốn, thấy kết trình bày thơng qua hàm pprint() SymPy Hàm pprint() hỗ trợ định dạng kết cách toán học tốt so với lệnh print kết xuất thông thường Python Thể kết trực quan ưu điểm gói SymPy làm cảm giác thân thiện gói tính tốn tốn học Thực hành Tốn cao cấp - 2019 Trang 15 Bộ môn Khoa học Dữ liệu Với hàm trên, tránh lỗi phát sinh vơ tình bất cẩn cố ý Ví dụ: với lệnh đây, lỗi xuất hiện: >>> tinh_daoham('x*/3+x**2+r', 'x') ………………………………………………………  Sinh viên ghi nhận lỗi Bên cạnh đó, để “giao tiếp” với hệ thống tốt hơn, bổ sung thêm trao đổi hệ thống người sử dụng Từ đó, phải nâng cấp chương trình theo hướng: - Vấn đề 1: Quản lý lỗi phát sinh (bằng chế try…except) Vấn đề 2: Thực việc giao tiếp với người sử dụng chương trình tốt Để thực vấn đề thứ 2, sử dụng chế nhập input chuẩn Python Cơ chế nhập cho phép nhập hàm nhập tên biến để gọi hàm Bên cạnh đó, thân SymPy cung cấp đối tượng để chuyển đổi giá trị từ input hàm thơng thường thành hàm SymPy, hàm sympify Lớp sympify hỗ trợ kể việc bắt lỗi với mã lỗi SympifyError chuyển đổi hàm sang dạng hàm SymPy() không thành công Để từ đó, sử dụng hàm cách tự nhiên, hàm sin(), cos() mà không cần phải thể khó hiểu như: sympy.sin(…) Đối với vấn đề 1, sử dụng chế kiểm soát lỗi ngoại lệ với khối try… except Nghĩa triệu gọi phương thức tinh_daoham() bên khối lệnh try:… except:… Thơng qua đó, viết thành chương trình độc lập Một chương trình độc lập đặt khối lệnh bắt đầu chương trình if name == ‘ main ’: Cụ thể sau: Đoạn mã: from sympy import Symbol, Derivative, sympify, pprint from sympy.core.sympify import SympifyError def tinh_daoham(ham_f, bien): bien = Symbol(bien) d = Derivative(ham_f, bien).doit() pprint(d) Thực hành Toán cao cấp - 2019 Trang 16 Bộ môn Khoa học Dữ liệu if name == ' main ': # luu y dau gach duoi _ o moi chu ham_input = input('Nhap ham so: ') bien = input('Nhap bien so: ') try: ham_sympy = sympify(ham_input) except SympifyError: print('Ham nhap bi loi!') else: tinh_daoham(ham, bien) Lưu ý: dòng if name … dấu gạch _ trước sau chữ name chữ main Chúng ta thực việc thử nghiệm thực thi cách nhấn F5 (hoặc menu Run  Run Module nhập vào hàm sin(2*x) Minh họa hình: nhập hàm kết tính đạo hàm: Chúng ta thực thi lần chương trình (bằng F5) với hàm sin (𝑥 ) Nhap ham so: sin(x**2) Nhap bien so: x ………………………………………………………  sinh viên điền kết Một ví dụ khác, với hàm nhiều biến, tính đạo hàm với biến biến khác xem số phép đạo hàm theo biến Cụ thể: Với hàm 𝑓 = 2𝑥 + 𝑦 , tính đạo hàm theo 𝑦 theo 𝑥 kết sau: Thực hành Toán cao cấp - 2019 Trang 17 Bộ môn Khoa học Dữ liệu Đạo hàm ứng dụng: Tìm hiểu ứng dụng phương pháp Gradient Ascent Đôi khi, thấy thú vị tốn tìm giá trị lớn tồn cục việc tìm cực trị hàm số Ví dụ: xét tốn ném/bắn đạn vừa vẽ đồ thị bên trên, muốn khám phá góc ném/“bắn” mà bóng đạt độ cao với vận tốc ban đầu không đổi Chúng ta tiếp cận phương pháp hỗ trợ cho tính tốn, giải đạo hàm với vấn đề vậy, đặc biệt ứng dụng thực tế sống mà “hàm” tính đạo hàm bậc Phương pháp gọi “Phương pháp gradient ascent” Là phương pháp lặp để tìm giá trị lớn tồn cục Vì vậy, phương pháp gradient ascent phương pháp cần thực nhiều tính tốn người ta thường sử dụng máy tính so với việc tính tay Trong trước, có phương trình thời gian bay vật thể là: 𝑡 =2 𝑢𝑠𝑖𝑛𝜃 𝑔 Để tính tốn thời gian bay vật thể chuyển động “đạn đạo” (projectile) ném với vận tốc ban đầu 𝑢 theo góc 𝜃 Miền projectile 𝑅 chiều dài vật thể xa cho tích 𝑢 × 𝑡 Ở 𝑢 thành phần ngang bao gồm vận tốc ban đầu có giá trị 𝑢𝑐𝑜𝑠𝜃 Thay công thức vào, được: 𝑅=𝑢 𝑡 = 𝑢𝑐𝑜𝑠𝜃 × 2𝑢𝑠𝑖𝑛𝜃 𝑢 𝑠𝑖𝑛2𝜃 = 𝑔 𝑔 Hình vẽ giá trị 𝜃 khoảng từ đến 90 độ vùng tương ứng cho góc Từ đồ thị (hình bên dưới) biểu diễn giá trị 𝑅 theo thay đổi góc 𝜃 với vận tốc ban đầu cố định 𝑢 = 30𝑚/𝑠, nhận thấy miền đạt cực đại góc chiếu gần 𝜃 = 45 , góc có giá trị gần = 0.785 (radian) Tuy nhiên, tìm góc 𝜃 tối ưu phương pháp Gradient Ascent Thực hành Toán cao cấp - 2019 Trang 18 Bộ môn Khoa học Dữ liệu Thực hành: Vẽ đồ thị hàm 𝑹 để thấy khoảng cách bay “đạn” theo góc bắn >>> from sympy import Symbol, sin, pi >>> u = Symbol('u') >>> u = 30.0 # van toc 30m/s >>> g = 9.81 # hang so gia toc truong >>> theta = Symbol('theta') >>> R = (u**2)*sin(2.0*theta)/g >>> R 91.743119266055*sin(2.0*theta) >>> plot(R, (theta, 0, pi/2)) # xet goc ban tu den 90 (do), tuong ung tu den pi/2 (radian) Phương pháp Gradient ascent (GA) phương pháp lặp: bắt đầu với giá trị 𝜃 khởi đầu 0.001, đó, cịn gọi 𝜃 ũ = 0.001 sau tăng dần để đạt giá trị tương ứng vùng lớn Các bước thể theo phương trình sau: 𝜃 =𝜃 ũ+𝜆 𝑑𝑅 𝑑𝜃 Với giá trị 𝜆 kích thước bước (step size) Thực hành Toán cao cấp - 2019 Trang 19 Bộ môn Khoa học Dữ liệu 𝑑𝑅 𝑑𝜃 đạo hàm 𝑅 theo 𝜃 Một đặt 𝜃 sau: ũ = 0.001, phải thực bước Bước 1: Tính tốn 𝜃 phương trình Bước 2: Nếu giá trị biểu thức |𝜃 − 𝜃 ũ | > 𝜀, với giá trị epsilon 𝜀 cho trước đặt giá trị cũ giá trị mới, nghĩa 𝜃 ũ = 𝜃 tiếp tục quay Bước Ngược lại, tiếp tục Bước đây: Bước 3: 𝜃 giá trị xấp xỉ 𝜃 mà 𝑅 đạt giá trị lớn Từ quy trình xử lý trên, nhận thấy vai trò quan trọng nằm việc chọn giá trị epsilon Trong thuật toán xử lý bên dưới, đặt giá trị epsilon số , thể Python giá trị 1e-6 [Vai trò giá trị epsilon đề cập Thực hành sau] Dưới đoạn code minh họa: Thực hành 9: Tìm giá trị cực đại hàm phương pháp Gradient Ascent >>> import math >>> from sympy import Derivative, Symbol, sin >>> def grad_ascent(x0, f1x, x): epsilon = 1e-6 step_size = 1e-4 x_cu = x0 x_moi = x_cu + step_size * f1x.subs({x: x_cu}).evalf() while abs(x_cu - x_moi) > epsilon: x_cu = x_moi x_moi = x_cu + step_size * f1x.subs({x: x_cu}).evalf() return x_moi >>> def tim_max_theta(R, theta): R1theta= Derivative(R, theta).doit() Thực hành Toán cao cấp - 2019 Trang 20 Bộ môn Khoa học Dữ liệu theta_0 = 1e-3 theta_max = grad_ascent(theta_0, R1theta, theta) return theta_max >>> g = 9.8 >>> u = 30 >>> theta = Symbol('theta') >>> R = (u**2) * sin(2*theta) / g >>> >>> theta_max = tim_max_theta(R, theta) >>> print ('Goc theta: {0}'.format(math.degrees(theta_max))) …………………………………………………………………………  Sinh viên điền kết >>> print ('Khoang cach vat bay xa: {0}'.format(R.subs({theta:theta_max}))) …………………………………………………………………………  Sinh viên điền kết Sau đó, đưa vào chương trình giả định lưu vào tập tin grad_asc.py đĩa D: Kết thực thi chương trình: Giá trị 𝜃 in theo độ tính gần 45 Nếu thay đổi vận tốc ban đầu thành giá trị khác, thấy giá trị 45 độ khơng thay đổi Bình luận: - Tuy vậy, Giảng viên cần nói rõ với Sinh viên rằng: Trên thực tế, lực ma sát với khơng khí, sức cản gió,… nên ứng dụng bắn đại bác vận động viên thi phóng lao kì vận hội Olympic ln phải chọn góc lớn 45 độ, khoảng 50 – 55 độ! Thực hành Toán cao cấp - 2019 Trang 21 Bộ môn Khoa học Dữ liệu - Phương pháp Gradient Ascent Gradient Descent ứng dụng nhiều hệ thống Học Máy (Machine Learning), đặc biệt ứng dụng tối ưu phân loại Các dạng toán thường gặp là: từ liệu khứ yếu tố ảnh hưởng đến giá hàng hóa, người ta tìm yếu tố thay đổi sống tác động đến giá hàng hóa nào: cháy rừng Amazon làm mạnh hàng hóa thị trường: kim loại quý, tiền tệ, dầu mỏ,…?; xác định chi phí th nhà hợp lý theo diện tích (như hình bên dưới) Thực hành Toán cao cấp - 2019 Trang 22 Bộ môn Khoa học Dữ liệu BÀI TẬP CHƯƠNG Những tập yêu cầu sinh viên nộp tuần học Bài tập 1: Vẽ đồ thị ném vật thể với góc ban đầu khác nhau, vận tốc không đổi Bài tập 2: Vẽ đồ thị định luật hấp dẫn Newton hai vật thể Biết phương trình định luật vạn vật hấp dẫn Newton là: 𝐹= 𝐺𝑚 𝑚 𝑟 Giả sử có hai vật có khối lượng 𝑚 = 0.5𝑘𝑔; 𝑚 = 1.5𝑘𝑔 Hằng số hấp dẫn 𝐺 = 6.674 × 10 𝑁𝑚 𝑘𝑔 Hãy vẽ đồ thị lực hấp dẫn vật thể khoảng cách: 100, 150, 200, 250, 300,… đến 1000 mét Kết đồ thị để Sinh viên tham khảo: Thực hành Toán cao cấp - 2019 Trang 23 ... Đạo hàm: Xây dựng chương trình tính đạo hàm 14 Đạo hàm ứng dụng: Tìm hiểu ứng dụng phương pháp Gradient Ascent 18 BÀI TẬP CHƯƠNG 23 Thực hành Tốn cao cấp - 2019... liệu CHƯƠNG 3: ĐẠO HÀM VÀ ỨNG DỤNG Mục tiêu: - Bổ túc lập trình Python: viết phương thức, chế bắt lỗi Python (30 phút) - Vẽ đồ thị tiếp theo: vẽ đồ thị theo công thức (30 phút) - Đạo hàm ứng dụng. .. dụ khác, với hàm nhiều biến, tính đạo hàm với biến biến khác xem số phép đạo hàm theo biến Cụ thể: Với hàm

Ngày đăng: 27/08/2022, 13:10

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w