SciPy - Tích hợp
Khi một chức năng không thể được tích hợp phân tích hoặc rất khó tích hợp về mặt phân tích, người ta thường chuyển sang phương pháp tích phân số. SciPy có một số quy trình để thực hiện tích hợp số. Hầu hết chúng được tìm thấy trong cùng mộtscipy.integratethư viện. Bảng sau liệt kê một số hàm thường được sử dụng.
Sr không. | Mô tả chức năng |
---|---|
1 | quad Tích hợp đơn lẻ |
2 | dblquad Tích hợp kép |
3 | tplquad Tích hợp ba |
4 | nquad tích hợp nhiều lần n -fold |
5 | fixed_quad Cầu phương Gaussian, bậc n |
6 | quadrature Cầu phương Gaussian để dung sai |
7 | romberg Tích hợp Romberg |
số 8 | trapz Quy luật trapezoidal |
9 | cumtrapz Quy tắc hình thang để tính tích phân tích lũy |
10 | simps Quy tắc Simpson |
11 | romb Tích hợp Romberg |
12 | polyint Tích phân đa thức phân tích (NumPy) |
13 | poly1d Hàm trợ giúp cho polyint (NumPy) |
Tích phân đơn
Hàm Quad là tập hợp các hàm tích hợp của SciPy. Tích hợp số đôi khi được gọi làquadrature, do đó có tên. Nó thường là lựa chọn mặc định để thực hiện các tích phân đơn lẻ của một hàm f (x) trên một phạm vi cố định nhất định từ a đến b.
$$ \ int_ {a} ^ {b} f (x) dx $$
Dạng tổng quát của quad là scipy.integrate.quad(f, a, b), Trong đó 'f' là tên của hàm được tích hợp. Trong khi, 'a' và 'b' lần lượt là giới hạn dưới và giới hạn trên. Chúng ta hãy xem một ví dụ về hàm Gaussian, được tích hợp trên phạm vi 0 và 1.
Đầu tiên chúng ta cần xác định hàm → $ f (x) = e ^ {- x ^ 2} $, điều này có thể được thực hiện bằng cách sử dụng biểu thức lambda và sau đó gọi phương thức quad trên hàm đó.
import scipy.integrate
from numpy import exp
f= lambda x:exp(-x**2)
i = scipy.integrate.quad(f, 0, 1)
print i
Chương trình trên sẽ tạo ra kết quả sau.
(0.7468241328124271, 8.291413475940725e-15)
Hàm quad trả về hai giá trị, trong đó số đầu tiên là giá trị của tích phân và giá trị thứ hai là ước tính của sai số tuyệt đối trong giá trị của tích phân.
Note- Vì quad yêu cầu hàm là đối số đầu tiên nên chúng ta không thể truyền trực tiếp exp làm đối số. Hàm Quad chấp nhận vô cùng dương và âm làm giới hạn. Hàm Quad có thể tích hợp các hàm NumPy tiêu chuẩn được xác định trước của một biến duy nhất, chẳng hạn như exp, sin và cos.
Nhiều tích phân
Cơ chế tích hợp gấp đôi và gấp ba đã được gói gọn trong các chức năng dblquad, tplquad và nquad. Các hàm này tích hợp bốn hoặc sáu đối số tương ứng. Giới hạn của tất cả các tích phân bên trong cần được xác định dưới dạng hàm.
Tích phân kép
Hình thức chung của dblquadlà scipy.integrate.dblquad (func, a, b, gfun, hfun). Trong đó, func là tên của hàm được tích hợp, 'a' và 'b' lần lượt là giới hạn dưới và trên của biến x, trong khi gfun và hfun là tên của các hàm xác định giới hạn dưới và giới hạn trên của biến y.
Ví dụ, chúng ta hãy thực hiện phương pháp tích phân kép.
$$ \ int_ {0} ^ {1/2} dy \ int_ {0} ^ {\ sqrt {1-4y ^ 2}} 16xy \: dx $$
Chúng tôi xác định các hàm f, g và h, sử dụng các biểu thức lambda. Lưu ý rằng ngay cả khi g và h là hằng số, vì chúng có thể là hằng số trong nhiều trường hợp, chúng phải được định nghĩa dưới dạng hàm, như chúng ta đã làm ở đây cho giới hạn dưới.
import scipy.integrate
from numpy import exp
from math import sqrt
f = lambda x, y : 16*x*y
g = lambda x : 0
h = lambda y : sqrt(1-4*y**2)
i = scipy.integrate.dblquad(f, 0, 0.5, g, h)
print i
Chương trình trên sẽ tạo ra kết quả sau.
(0.5, 1.7092350012594845e-14)
Ngoài các quy trình được mô tả ở trên, scipy.integrate có một số quy trình tích hợp khác, bao gồm nquad, thực hiện tích hợp nhiều lần n, cũng như các quy trình khác triển khai các thuật toán tích hợp khác nhau. Tuy nhiên, quad và dblquad sẽ đáp ứng hầu hết các nhu cầu của chúng ta về tích hợp số.