Đạo hàm số python của mảng

Tôi không chắc mình đã hiểu câu hỏi của bạn chưa, nhưng tôi nghĩ bạn đang yêu cầu tính đạo hàm bậc nhất và đạo hàm bậc năm. Nếu vậy, bạn có thể làm điều này

dydx = np.gradient[y, x]  # First derivative.
d2ydx2 = np.gradient[dydx, x]  # Second derivative.
d3ydx3 = np.gradient[d2ydx2, x]  # Third derivative.
d4ydx4 = np.gradient[d3ydx3, x]  # Fourth derivative.
d5ydx5 = np.gradient[d4ydx4, x]  # Fifth derivative.

Nhưng hãy nhớ rằng np. độ dốc chỉ là một xấp xỉ số, vì vậy nó sẽ gây ra một số lỗi. Mỗi lần bạn gọi nó, các lỗi sẽ phức tạp. Tôi sẽ rất ngạc nhiên nếu đạo hàm thứ năm chính xác như đạo hàm thứ nhất

Y của bạn là một phương trình bậc hai. Vì vậy, chúng ta có thể sử dụng phép tính để tính các đạo hàm chính xác và kiểm tra tính chính xác của các điểm được tính

Chúng ta đang chứng kiến ​​việc sử dụng mạnh mẽ các phương pháp số trong các lĩnh vực khoa học và công nghệ hiện đại khác nhau

Tại sao?

Ví dụ, khi giải các bài toán kỹ thuật, người ta thường sử dụng phép tính đạo hàm của một hàm số.

Trong khoa học dữ liệu, nó không khác. Thông thường, các giá trị đầu vào của các hàm được chỉ định dưới dạng một cặp đối số-giá trị, trong các mảng dữ liệu lớn, có thể sử dụng nhiều dữ liệu đáng kể để xử lý. May mắn thay, nhiều vấn đề sẽ dễ giải quyết hơn nhiều nếu bạn sử dụng đạo hàm của một hàm, giúp ích cho nhiều lĩnh vực khác nhau như kinh tế, xử lý hình ảnh, phân tích tiếp thị, v.v.

Tính toán đạo hàm thường được sử dụng trong phân tích dữ liệu. Chẳng hạn, khi tìm giá trị tối ưu của các hàm. Việc tính toán đạo hàm cũng được sử dụng cho phương pháp gradient khi huấn luyện mạng nơ-ron

Trong bài đăng này, chúng tôi kiểm tra cách bạn có thể tính giá trị của đạo hàm bằng các phương pháp số trong Python

Nguyên tắc phân biệt số

Phân biệt số dựa trên phép tính gần đúng của hàm mà từ đó đạo hàm được lấy bởi một đa thức nội suy. Tất cả các công thức cơ bản để phân biệt số có thể thu được bằng cách sử dụng đa thức nội suy đầu tiên của Newton

Công thức chung để tính đạo hàm là

Ở đây, các hệ số aj và b phụ thuộc vào bậc n của đa thức nội suy được sử dụng, tức là vào độ chính xác cần thiết. Các hệ số lên đến bậc 5 có thể được trình bày dưới dạng bảng

Bạn có thể dễ dàng nhận được công thức tính đạo hàm số của một hàm tại một điểm bằng cách thay thế các giá trị cần thiết của các hệ số

Ví dụ, phương pháp Euler, phương pháp số đơn giản nhất để giải các hệ phương trình vi phân thông thường, sẽ như thế này

Phương pháp của Euler có thể được biểu diễn bằng đồ họa như sau

Phương pháp Python để phân biệt số

Chẳng hạn, hãy lấy hàm y = f [x], y = x2. Sau đó, hãy đặt giá trị hàm ở dạng cặp x, y với bước 0. 01 cho phạm vi của x từ 0 đến 4

Chúng ta sẽ sử dụng đạo hàm scipy để tính đạo hàm bậc nhất của hàm. Vui lòng không viết mã của riêng bạn để tính đạo hàm của một hàm cho đến khi bạn biết tại sao bạn cần nó. scipy cung cấp triển khai nhanh các phương thức số và nó được biên dịch trước và thử nghiệm trên nhiều trường hợp sử dụng

import numpy
import matplotlib.pyplot as plt
 
def f[x]:
 return x*x
 
x = numpy.arange[0,4,0.01]
y = f[x]
 
plt.figure[figsize=[10,5]]
plt.plot[x, y, 'b']
plt.grid[axis = 'both']
plt.show[]

Bây giờ, hãy lấy một chức năng từ scipy. thư viện misc và tính giá trị của đạo hàm tại điểm x = 1. Hãy đặt bước dẫn xuất của phương thức thành 0. 001

Để biết thêm thông tin về scipy. linh tinh. phái sinh, vui lòng tham khảo sách hướng dẫn này. Nó cho phép bạn tính đạo hàm bậc nhất, đạo hàm bậc hai, v.v. Nó chấp nhận các hàm làm đầu vào và hàm này có thể được biểu diễn dưới dạng hàm Python. Cũng có thể cung cấp tham số "khoảng cách" dx, điều này sẽ cung cấp cho bạn khả năng thiết lập bước của các khoảng đạo hàm

# //docs.scipy.org/doc/scipy-0.18.0/reference/generated/scipy.misc.derivative.html
#
from scipy.misc import derivative
 
d = derivative[f, 1.0, dx=1e-3]
 
print [d]

1.9999999999998352

Ngoài ra, bạn có thể sử dụng thư viện numpy để tính toán tất cả các giá trị đạo hàm trong phạm vi x = 0. 4 với bước 0. 01 như chúng ta đã đặt trong chức năng nhập liệu. Sau đó, bạn có thể sử dụng np. phương pháp gradient.  

import numpy as np
 
dy = np.gradient[y]
dx = np.gradient[x]
 
d = dy/dx
d
 
array[[0.01, 0.02, 0.04, 0.06, 0.08, 0.1 , 0.12, 0.14, 0.16, 0.18, 0.2 ,
       0.22, 0.24, 0.26, 0.28, 0.3 , 0.32, 0.34, 0.36, 0.38, 0.4 , 0.42,
       0.44, 0.46, 0.48, 0.5 , 0.52, 0.54, 0.56, 0.58, 0.6 , 0.62, 0.64,
     ...
       7.26, 7.28, 7.3 , 7.32, 7.34, 7.36, 7.38, 7.4 , 7.42, 7.44, 7.46,
       7.48, 7.5 , 7.52, 7.54, 7.56, 7.58, 7.6 , 7.62, 7.64, 7.66, 7.68,
       7.7 , 7.72, 7.74, 7.76, 7.78, 7.8 , 7.82, 7.84, 7.86, 7.88, 7.9 ,
       7.92, 7.94, 7.96, 7.97]]

Bạn cũng có thể sử dụng tùy chọn này để có kết quả chính xác hơn một chút so với tùy chọn trước đó

import numpy as np
 
np.gradient[y, x]

array[[0.01, 0.02, 0.04, 0.06, 0.08, 0.1 , 0.12, 0.14, 0.16, 0.18, 0.2 ,
       0.22, 0.24, 0.26, 0.28, 0.3 , 0.32, 0.34, 0.36, 0.38, 0.4 , 0.42,
       0.44, 0.46, 0.48, 0.5 , 0.52, 0.54, 0.56, 0.58, 0.6 , 0.62, 0.64,
      ...
       7.26, 7.28, 7.3 , 7.32, 7.34, 7.36, 7.38, 7.4 , 7.42, 7.44, 7.46,
       7.48, 7.5 , 7.52, 7.54, 7.56, 7.58, 7.6 , 7.62, 7.64, 7.66, 7.68,
       7.7 , 7.72, 7.74, 7.76, 7.78, 7.8 , 7.82, 7.84, 7.86, 7.88, 7.9 ,
       7.92, 7.94, 7.96, 7.98, 7.99]]

Nếu bạn nhìn vào đồ thị của hàm đạo hàm, bạn sẽ có dạng sau

Ước tính lỗi với một hình thức phân tích vi phân

Ước tính lỗi để tính giá trị số của đạo hàm có thể được thực hiện bằng cách tính công thức cho đạo hàm theo cách giải tích và thay thế giá trị tại một điểm mong muốn

Ví dụ: đối với hàm chúng tôi đang xem xét trong ví dụ này, bạn có thể tính toán phân tích công thức như sau

y = x2

y ‘ = 2 x

Sau đó, tại điểm x = 4, bạn sẽ nhận được giá trị của đạo hàm 8. Các phương pháp số từ trước mang lại 7. 97 và 7. 99 kết quả, đó là do tính gần đúng của đạo hàm

Giá trị được tính bằng các phương pháp trên có thể khác nhau khoảng 0. 01. Lý do cho sự khác biệt này là gì?

Trước tiên, bạn cần chọn đúng giá trị lấy mẫu cho hàm. Bước càng nhỏ, giá trị tính toán sẽ càng chính xác

Thứ hai, bạn phải chọn bậc của hàm tích phân giống với bậc của đa thức của hàm được phân biệt

Bạn cũng cần xem xét vùng ổn định tuyệt đối cho các phương pháp phân biệt số đã cho. Chẳng hạn, các phương pháp Euler ngược và xuôi có thể hiển thị các vùng ổn định khác nhau, i. e. , cần có bước khác biệt hóa nhỏ. Vui lòng tìm thêm thông tin tại đây

Ngoài phân biệt scipy, bạn cũng có thể sử dụng phân biệt phân tích trong Python. Gói SymPy cho phép bạn thực hiện các phép tính ở dạng phân tích của một công cụ phái sinh. Trong một số trường hợp, bạn cần có công thức giải tích đạo hàm để có kết quả chính xác hơn. Các dạng tính toán tượng trưng có thể chậm đối với một số hàm, tuy nhiên trong quá trình nghiên cứu có những trường hợp dạng giải tích chiếm ưu thế hơn so với phương pháp số

Sự kết luận

Lĩnh vực khoa học dữ liệu và học máy đang phát triển nhanh chóng đòi hỏi các chuyên gia lĩnh vực nắm vững các thuật toán và phương pháp tính toán

Python là một đồng minh tuyệt vời khi giải quyết các loại vấn đề này nhờ mạng lưới thư viện và khung phát triển của nó

Kiến thức về các phương pháp số cơ bản là cần thiết trong quá trình này. Các chuyên gia của Hệ thống Svitla có kiến ​​thức sâu rộng trong lĩnh vực này và có nhiều kinh nghiệm thực tế trong việc giải quyết vấn đề trong lĩnh vực khoa học dữ liệu và máy học

Yêu cầu sự trợ giúp của chuyên gia và phát triển dự án tại Svitla Systems, nơi bạn sẽ luôn nhận được các dịch vụ chất lượng và sản phẩm chất lượng

Chủ Đề