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, tplquadnquad. 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ố.