Tôi có hàm hai chiều $ f (x, y) = \ exp (y-x) $. Tôi muốn tính toán tích phân kép $ \ int_ {0}^{10} \ int_ {0}^{10} f (x, y) dx dy $ bằng cách sử dụng bẫy numpy. Sau khi đọc được, họ nói tôi chỉ nên lặp lại cái bẫy hai lần nhưng nó không hoạt động. Tôi đã thử những điều sau
import numpy as np def distFunc(x,y): f = np.exp(-x+y) return f # Values in x to evaluate the integral. x = np.linspace(.1, 10, 100) y = np.linspace(.1, 10, 100) list1=distFunc(x,y) int_exp2d = np.trapz(np.trapz(list1, y, axis=0), x, axis=0)Mã luôn đưa ra lỗi
IndexError: list assignment index out of rangeTôi không biết làm thế nào để khắc phục điều này để mã có thể hoạt động. Tôi nghĩ rằng bẫy bên trong là để tích hợp dọc theo y trước tiên chúng tôi kết thúc bằng thứ hai dọc theo x. Cảm ơn bạn.
Tích hợp dọc theo trục đã cho bằng cách sử dụng quy tắc hình thang tổng hợp.
Nếu X được cung cấp, sự tích hợp xảy ra theo trình tự dọc theo các yếu tố của nó - chúng không được sắp xếp.
Tích hợp y (x) dọc theo mỗi lát 1D trên trục đã cho, tính toán \ (\ int y (x) dx \). Khi x được chỉ định, điều này tích hợp dọc theo đường cong tham số, tính toán \ (\ int_t y (t) dt = \ int_t y (t) \ left. )} dt \).\(\int y(x) dx\). When x is specified, this integrates along the parametric curve, computing \(\int_t y(t) dt = \int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt\).
Parametersyarray_likeyarray_likeMảng đầu vào để tích hợp.
xarray_like, tùy chọnarray_like, optionalCác điểm mẫu tương ứng với các giá trị y. Nếu X không có, các điểm mẫu được giả định là cách nhau DX đều nhau. Mặc định là không có.
DXSCALAR, tùy chọnscalar, optionalKhoảng cách giữa các điểm mẫu khi x không có. Mặc định là 1.
Trục, tùy chọnint, optionalTrục dọc theo đó để tích hợp.
Trở lại hoặc ndarraytrapzfloat or ndarrayTích hợp xác định của mảng y = n chiều xấp xỉ dọc theo một trục duy nhất theo quy tắc hình thang. Nếu y là một mảng 1 chiều, thì kết quả là một chiếc phao. Nếu N lớn hơn 1, thì kết quả là một mảng chiều N-1.
Ghi chú
Hình ảnh [2] minh họa quy tắc hình thang-Vị trí trục y của các điểm sẽ được lấy từ mảng Y, theo khoảng cách trục x giữa các điểm sẽ là 1.0, thay vào đó, chúng có thể được cung cấp với mảng X hoặc với vô hướng DX. Giá trị trả về sẽ bằng với diện tích kết hợp dưới các đường màu đỏ.
Người giới thiệu
1Trang Wikipedia: //en.wikipedia.org/wiki/trapezoidal_rule
2Hình ảnh minh họa: //en.wikipedia.org/wiki/file:composite_trapezoidal_rule_illustration.png
Ví dụ
>>> np.trapz([1,2,3]) 4.0 >>> np.trapz([1,2,3], x=[4,6,8]) 8.0 >>> np.trapz([1,2,3], dx=2) 8.0
Sử dụng X giảm tương ứng với việc tích hợp ngược lại:
>>> np.trapz([1,2,3], x=[8,6,4]) -8.0
Tổng quát hơn x được sử dụng để tích hợp dọc theo đường cong tham số. Điều này tìm thấy khu vực của một vòng tròn, lưu ý chúng tôi lặp lại mẫu đóng đường cong:
>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True) >>> np.trapz(np.cos(theta), x=np.sin(theta)) 3.141571941375841
>>> a = np.arange(6).reshape(2, 3) >>> a array([[0, 1, 2], [3, 4, 5]]) >>> np.trapz(a, axis=0) array([1.5, 2.5, 3.5]) >>> np.trapz(a, axis=1) array([2., 8.])