Hướng dẫn how do you double an integral in python? - làm thế nào để bạn nhân đôi một tích phân trong python?

scipy.integrate.dblquad (func, a, b, gfun, hfun, args = (), epsabs = 1.49e-08, epsrel = 1.49E-08) [Nguồn]#dblquad(func, a, b, gfun, hfun, args=(), epsabs=1.49e-08, epsrel=1.49e-08)[source]#

Tính toán tích phân kép.

Trả về tích phân đôi (xác định) của func(y, x) từ x = a..by = gfun(x)..hfun(x).

Tham sốfunccallablefunccallable

Hàm Python hoặc phương pháp của ít nhất hai biến: y phải là đối số đầu tiên và x đối số thứ hai.

a, bfloatfloat

Giới hạn tích hợp trong x: a gfuncallable hoặc floatcallable or float

Đường cong ranh giới dưới trong y là một hàm lấy một đối số điểm nổi (x) và trả về kết quả điểm nổi hoặc phao cho thấy đường cong ranh giới không đổi.

hfuncallable hoặc floatcallable or float

Đường cong ranh giới trên trong y (cùng yêu cầu với GFUN).

args sau, tùy chọnsequence, optional

Các đối số bổ sung để chuyển đến func.

epsabsfloat, tùy chọnfloat, optional

Dung sai tuyệt đối được truyền trực tiếp đến tích hợp qua hai chiều bên trong. Mặc định là 1.49e-8. dblquad cố gắng đạt được độ chính xác của abs(i-result) <= max(epsabs, epsrel*abs(i)) trong đó i = tích phân bên trong của func(y, x) từ

>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
0 đến
>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
1 và
>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
2 là xấp xỉ bằng số. Xem EPSREL bên dưới.

epsrelfloat, tùy chọnfloat, optional

Dung sai tương đối của các tích phân 1-D bên trong. Mặc định là 1.49e-8. Nếu

>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
3, EPSREL phải lớn hơn cả 5E-29 và
>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
4. Xem epsab ở trên.

ReturnSyFloatyfloat

Các tích phân kết quả.

abserrfloatfloat

Một ước tính của lỗi.

Ghi chú

Chi tiết về các thói quen cấp quadpack

>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
5 gọi các thói quen từ thư viện Fortran QuadPack. Phần này cung cấp chi tiết về các điều kiện cho mỗi thói quen được gọi và một mô tả ngắn về từng thói quen. Đối với mỗi cấp độ tích hợp,
>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
6 được sử dụng cho các giới hạn hữu hạn hoặc
>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
7 được sử dụng nếu giới hạn (hoặc cả hai!) Là vô hạn. Sau đây cung cấp một mô tả ngắn từ [1] cho mỗi thói quen.

Qagse

là một nhà tích hợp dựa trên phân khu khoảng thời gian thích ứng toàn cầu liên quan đến phép ngoại suy, sẽ loại bỏ các tác động của các điểm kỳ tích của một số loại.

qagie

Xử lý tích hợp trong các khoảng thời gian vô hạn. Phạm vi vô hạn được ánh xạ vào một khoảng thời gian hữu hạn và sau đó chiến lược tương tự như trong

>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
8 được áp dụng.

Người giới thiệu

1

Piessens, Robert; De Doncker-Kapenga, Elise; Überhuber, Christoph W .; Kahaner, David (1983). QuadPack: Gói chương trình con để tích hợp tự động. Springer-Verlag. ISBN 980-3-540-12553-2.

Ví dụ

Tính toán tích phân kép của

>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)
9 trên hộp
>>> f = lambda y, x, a: a*x*y
>>> integrate.dblquad(f, 0, 1, lambda x: x, lambda x: 2-x, args=(1,))
    (0.33333333333333337, 5.551115123125783e-15)
>>> integrate.dblquad(f, 0, 1, lambda x: x, lambda x: 2-x, args=(3,))
    (0.9999999999999999, 1.6653345369377348e-14)
0 từ 0 đến 2 và
>>> f = lambda y, x, a: a*x*y
>>> integrate.dblquad(f, 0, 1, lambda x: x, lambda x: 2-x, args=(1,))
    (0.33333333333333337, 5.551115123125783e-15)
>>> integrate.dblquad(f, 0, 1, lambda x: x, lambda x: 2-x, args=(3,))
    (0.9999999999999999, 1.6653345369377348e-14)
1 từ 0 đến 1. nghĩa là, \ (\ int^{x = 2} _ {x = 0} \ int^{y = 1} _ {y = 0} x y^2 \, dy \, dx \).\(\int^{x=2}_{x=0} \int^{y=1}_{y=0} x y^2 \,dy \,dx\).

>>> from scipy import integrate
>>> f = lambda y, x: x*y**2
>>> integrate.dblquad(f, 0, 2, 0, 1)
    (0.6666666666666667, 7.401486830834377e-15)

Tính toán \ (\ int^{x = \ pi/4} _ {x = 0} \ int^{y = \ cos (x)} _ {y = \ sin (x)} 1 ​​\, dy \, dx \ ).\(\int^{x=\pi/4}_{x=0} \int^{y=\cos(x)}_{y=\sin(x)} 1 \,dy \,dx\).

>>> f = lambda y, x: 1
>>> integrate.dblquad(f, 0, np.pi/4, np.sin, np.cos)
    (0.41421356237309503, 1.1083280054755938e-14)

Tính toán \ (\ int^{x = 1} _ {x = 0} \ int^{y = x} _ {y = 2-x} a x y \, dy \, dx \) cho \ (a = 1, 3 \).\(\int^{x=1}_{x=0} \int^{y=x}_{y=2-x} a x y \,dy \,dx\) for \(a=1, 3\).

>>> f = lambda y, x, a: a*x*y
>>> integrate.dblquad(f, 0, 1, lambda x: x, lambda x: 2-x, args=(1,))
    (0.33333333333333337, 5.551115123125783e-15)
>>> integrate.dblquad(f, 0, 1, lambda x: x, lambda x: 2-x, args=(3,))
    (0.9999999999999999, 1.6653345369377348e-14)

Công thức của tích phân kép là gì?

Các thuộc tính của các tích phân kép như sau: ∫x = ab ∫y = cd f (x, y) dy.dx = ∫y = cd∫x = ab f (x, y) dx.x=aby=cd f(x,y)dy. dx = ∫y=cdx=ab f(x,y)dx.

Bạn có thể tích hợp hai lần?

Nhiều chức năng có thể được tích hợp bằng cách sử dụng tích hợp theo các phần yêu cầu tích hợp theo các phần được áp dụng nhiều lần.Điều này thường là cần thiết để giảm sức mạnh của \ (x \) một lần.. This is often necessary to reduce a power of \(x\) by one at a time.

Python có thể được sử dụng để tích hợp không?

Có lẽ tính năng tốt nhất của Python khi nói đến việc tích hợp với các công nghệ hiện có là yếu tố ngôn ngữ keo dán.Thay vì xây dựng lại các công nghệ và hệ thống hiện có từ đầu, phát triển ứng dụng Python có thể chỉ cần sử dụng API REST hoặc FFI của Python (giao diện ngoại ngữ) để liên kết chúng lại với nhau.Python app development can simply use Python's REST API or FFI (Foreign Language Interface) to bind them together.