Độ dốc được tính toán bằng cách sử dụng chênh lệch trung tâm chính xác bậc hai ở các điểm bên trong và chênh lệch chính xác một bên [tiến hoặc lùi] bậc một hoặc bậc hai tại các ranh giới. Do đó, độ dốc được trả về có cùng hình dạng với mảng đầu vào
Thông sốfarray_likeMảng N chiều chứa các mẫu của hàm vô hướng
varargslist của vô hướng hoặc mảng, tùy chọnKhoảng cách giữa các giá trị f. Giãn cách đơn vị mặc định cho tất cả các kích thước. Khoảng cách có thể được chỉ định bằng cách sử dụng
vô hướng đơn để chỉ định khoảng cách mẫu cho tất cả các kích thước
N vô hướng để chỉ định khoảng cách mẫu không đổi cho mỗi thứ nguyên. tôi. e. dx, dy, dz, …
N mảng để xác định tọa độ của các giá trị dọc theo mỗi chiều của F. Độ dài của mảng phải khớp với kích thước của chiều tương ứng
Bất kỳ sự kết hợp nào của N vô hướng/mảng có nghĩa là 2. và 3
Nếu trục được đưa ra, số lượng varargs phải bằng số lượng trục. Mặc định. 1
edge_order{1, 2}, tùy chọnĐộ dốc được tính bằng cách sử dụng chênh lệch chính xác thứ tự N tại các ranh giới. Mặc định. 1
axisNone hoặc int hoặc bộ số nguyên, tùy chọnĐộ dốc chỉ được tính toán dọc theo trục hoặc các trục đã cho. Mặc định [trục = Không có] là tính toán độ dốc cho tất cả các trục của mảng đầu vào. trục có thể âm, trong trường hợp đó, nó được tính từ trục cuối cùng đến trục đầu tiên
Một danh sách ndarray [hoặc một ndarray duy nhất nếu chỉ có một chiều] tương ứng với các đạo hàm của f đối với mỗi chiều. Mỗi đạo hàm có cùng dạng với f
ghi chú
Giả sử rằng \[f\in C^{3}\] [i. e. , \[f\] có ít nhất 3 đạo hàm liên tục] và để \[h_{*}\] là kích thước bậc không đồng nhất, chúng tôi giảm thiểu “lỗi nhất quán” \[\eta_{i}\] giữa độ dốc thực
\[\eta_{i} = f_{i}^{\left[1\right]} - \left[ \alpha f\left[x_{i}\right] + \beta f\left[x_{i}
Bằng cách thay thế \[f[x_{i} + h_{d}]\] và \[f[x_{i} - h_{s}]\] bằng khai triển chuỗi Taylor của chúng, điều này chuyển thành việc giải hệ phương trình tuyến tính sau
\[\begin{split}\left\{ \begin{array}{r} \alpha+\beta+\gamma=0 \\ \beta h_{d}-\gamma h_{s}=1 \\ \beta h_{ . \end{split}\]
Kết quả gần đúng của \[f_{i}^{[1]}\] như sau
\[\hat f_{i}^{[1]} = \frac{ h_{s}^{2}f\left[x_{i} + h_{d}\right] + \left[h_{d}
Điều đáng chú ý là nếu \[h_{s}=h_{d}\] [i. e. , dữ liệu cách đều nhau], chúng tôi tìm thấy xấp xỉ bậc hai tiêu chuẩn
\[\hat f_{i}^{[1]}= \frac{f\left[x_{i+1}\right] - f\left[x_{i-1}\right]}{2h} +
Với một quy trình tương tự, các xấp xỉ tiến/lùi được sử dụng cho các ranh giới có thể được suy ra
Người giới thiệu
1quý A. , Sacco R. , Saleri F. [2007] Toán số [Văn bản trong Toán ứng dụng]. Newyork. lò xo
2Durran D. r. [1999] Phương pháp số cho phương trình sóng trong động lực học chất lỏng địa vật lý. Newyork. lò xo
3Fornberg B. [1988] Tạo các công thức sai phân hữu hạn trên các lưới cách nhau tùy ý, Toán học tính toán 51, không. 184. 699-706. PDF
ví dụ
>>> f = np.array[[1, 2, 4, 7, 11, 16], dtype=float] >>> np.gradient[f] array[[1. , 1.5, 2.5, 3.5, 4.5, 5. ]] >>> np.gradient[f, 2] array[[0.5 , 0.75, 1.25, 1.75, 2.25, 2.5 ]]
Khoảng cách cũng có thể được chỉ định bằng một mảng biểu thị tọa độ của các giá trị F dọc theo kích thước. Ví dụ, một khoảng cách thống nhất
>>> x = np.arange[f.size] >>> np.gradient[f, x] array[[1. , 1.5, 2.5, 3.5, 4.5, 5. ]]
Hoặc một cái không đồng nhất
>>> x = np.array[[0., 1., 1.5, 3.5, 4., 6.], dtype=float] >>> np.gradient[f, x] array[[1. , 3. , 3.5, 6.7, 6.9, 2.5]]
Đối với mảng hai chiều, kết quả trả về sẽ là hai mảng được sắp xếp theo trục. Trong ví dụ này, mảng đầu tiên đại diện cho độ dốc theo hàng và mảng thứ hai theo hướng cột
Trong phương pháp tối ưu hóa giảm dần độ dốc, một hàm giả thuyết, $h_\boldsymbol{\theta}[x]$, được khớp với một tập dữ liệu, $[x^{[i]}, y^{[i]}] . Hàm chi phí mô tả mức độ phù hợp của giả thuyết với dữ liệu đối với một lựa chọn nhất định về $\boldsymbol \theta$
Ví dụ: một người có thể muốn khớp một tập dữ liệu đã cho thành một đường thẳng, $$ h_\boldsymbol{\theta}[x] = \theta_0 + \theta_1 x. $$ Một hàm chi phí phù hợp có thể là tổng của bình phương sự khác biệt giữa dữ liệu và giả thuyết. $$ J[\boldsymbol{\theta}] = \frac{1}{2m} \sum_i^{m} \left[h_\theta[x^{[i]}] - y^{[i]}\ . $$ Phương pháp giảm độ dốc bắt đầu với một tập hợp các giá trị tham số ban đầu là $\boldsymbol\theta$ [giả sử $\theta_0 = 0, \theta_1 = 0$], sau đó tuân theo một quy trình lặp, thay đổi các giá trị của $\ . $$ \theta_j \rightarrow \theta_j - \alpha \frac{\partial}{\partial \theta_j}J[\boldsymbol{\theta}]. $$
Để đơn giản hóa mọi thứ, hãy xem xét việc khớp một tập dữ liệu thành một đường thẳng qua gốc tọa độ. $h_\theta[x] = \theta_1 x$. Trong bài toán một chiều này, chúng ta có thể vẽ một đồ thị đơn giản cho $J[\theta_1]$ và thực hiện theo quy trình lặp cố gắng hội tụ tại điểm cực tiểu của nó
Việc khớp một đường thẳng chung với một tập dữ liệu yêu cầu hai tham số và do đó $J[\theta_0, \theta_1]$ có thể được hiển thị dưới dạng biểu đồ đường đồng mức. Quy trình lặp tương tự đối với hai tham số này cũng có thể được thực hiện dưới dạng các điểm trên biểu đồ này