Thư viện numdifftools là một bộ công cụ được viết bằng _Python để giải các bài toán phân biệt số tự động trong một hoặc nhiều biến. Sự khác biệt hữu hạn được sử dụng theo cách thích ứng, kết hợp với phương pháp ngoại suy Richardson để cung cấp kết quả chính xác tối đa. Người dùng có thể cấu hình nhiều tùy chọn như;
Các phương pháp được cung cấp là
- Phát sinh. Tính các đạo hàm của bậc 1 đến 10 trên bất kỳ hàm vô hướng nào
- định hướng. Tính đạo hàm có hướng của hàm n biến
- Dốc. Tính toán vectơ gradient của hàm vô hướng của một hoặc nhiều biến
- Giacôbê. Tính toán ma trận Jacobian của hàm có giá trị vectơ của một hoặc nhiều biến
- Hessian. Tính toán ma trận Hessian của tất cả các đạo hàm riêng cấp 2 của hàm vô hướng của một hoặc nhiều biến
- Hessdiag. Chỉ tính các phần tử đường chéo của ma trận Hessian
Tất cả các phương pháp này cũng tạo ra ước tính lỗi trên kết quả
Numdifftools cũng cung cấp giao diện dễ sử dụng cho các công cụ phái sinh được tính toán bằng _AlgoPy. Algopy là viết tắt của Sự khác biệt thuật toán trong Python. Mục đích của AlgoPy là đánh giá các dẫn xuất bậc cao hơn ở chế độ tiến và lùi của Phân biệt thuật toán [AD] của các hàm được triển khai dưới dạng chương trình Python
Bắt đầu
Trực quan hóa các dẫn xuất bậc cao của hàm tanh
>>> import numpy as np >>> import numdifftools as nd >>> import matplotlib.pyplot as plt >>> x = np.linspace[-2, 2, 100] >>> for i in range[10]: .. df = nd.Derivative[np.tanh, n=i] .. y = df[x] .. h = plt.plot[x, y/np.abs[y].max[]]>>> plt.show[] # doctest: +SKIP
Tính đạo hàm bậc 1 và bậc 2 của exp[x], tại x == 1
>>> fd = nd.Derivative[np.exp] # 1'st derivative >>> fdd = nd.Derivative[np.exp, n=2] # 2'nd derivative >>> np.allclose[fd[1], 2.7182818284590424] True >>> np.allclose[fdd[1], 2.7182818284590424] True
bình phương nhỏ nhất phi tuyến tính
>>> xdata = np.reshape[np.arange[0,1,0.1],[-1,1]] >>> ydata = 1+2*np.exp[0.75*xdata] >>> fun = lambda c: [c[0]+c[1]*np.exp[c[2]*xdata] - ydata]**2 >>> Jfun = nd.Jacobian[fun] >>> np.allclose[np.abs[Jfun[[1,2,0.75]]], 0] # should be numerically zero True
Tính độ dốc của tổng[x**2]
>>> fun = lambda x: np.sum[x**2] >>> dfun = nd.Gradient[fun] >>> np.allclose[dfun[[1,2,3]], [ 2., 4., 6.]] True
Tính toán tương tự với giao diện dễ sử dụng của AlgoPy
>>> import numdifftools.nd_algopy as nda >>> import numpy as np >>> fd = nda.Derivative[np.exp] # 1'st derivative >>> fdd = nda.Derivative[np.exp, n=2] # 2'nd derivative >>> np.allclose[fd[1], 2.7182818284590424] True >>> np.allclose[fdd[1], 2.7182818284590424] True
bình phương nhỏ nhất phi tuyến tính
>>> xdata = np.reshape[np.arange[0,1,0.1],[-1,1]] >>> ydata = 1+2*np.exp[0.75*xdata] >>> fun = lambda c: [c[0]+c[1]*np.exp[c[2]*xdata] - ydata]**2 >>> Jfun = nda.Jacobian[fun, method='reverse'] >>> np.allclose[np.abs[Jfun[[1,2,0.75]]], 0] # should be numerically zero True
Tính độ dốc của tổng[x**2]
>>> fun = lambda x: np.sum[x**2] >>> dfun = nda.Gradient[fun] >>> np.allclose[dfun[[1,2,3]], [ 2., 4., 6.]] True
Xem thêm
scipy. linh tinh. phát sinh
Tài liệu và mã
Numdifftools hoạt động trên Python 2. 7+ và Python3. 0+
Bản phát hành chính thức có sẵn tại. http. //pypi. con trăn. org/pypi/numdifftools
Tài liệu chính thức có sẵn tại. http. // numdifftools. đọcthedocs. io/vi/mới nhất/
Tối tân. https. //github. com/pbrod/numdifftools
Cài đặt
Nếu bạn đã cài đặt pip, thì chỉ cần gõ
$ pip cài đặt numdifftools
để có được phiên bản ổn định mới nhất. Sử dụng pip còn có ưu điểm là mọi yêu cầu đều được cài đặt tự động
bài kiểm tra đơn vị
Để kiểm tra xem hộp công cụ có hoạt động hay không, hãy dán phần sau vào phiên python tương tác
________số 8Nhìn nhận
Gói numdifftools cho Python được viết bởi Per A. Brodtkorb dựa trên hộp công cụ phân biệt số thích ứng được viết bằng Matlab bởi John D'Errico
Sau đó, gói đã được mở rộng với một số chức năng được tìm thấy trong mô hình thống kê. công cụ. mô-đun numdiff được viết bởi Josef Perktold dựa trên. Việc triển khai các số phức hợp dựa trên việc triển khai matlab được mô tả trong báo cáo dự án dựa trên [GLD12]. Để hoàn thiện, phương pháp tính trọng số và điểm trong các công thức sai phân hữu hạn tổng quát cũng như phương pháp cộng các hệ số taylor của hàm giải tích phức sử dụng FFT, đã được bổ sung