Làm thế nào để bạn viết một sigma tổng kết trong python?

Để kiểm tra xem một dãy có thuộc loại này hay không, bạn có thể sử dụng phương thức

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
3 có sẵn trong lớp Cơ bản. Đây là ví dụ đơn giản liên quan đến một đa thức

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True

Tất nhiên đa thức là siêu hình học nhưng có chuỗi nào phức tạp hơn loại này không?

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True

Chúng tôi thấy rằng tất cả các loài được sử dụng trong tổng kết và các phần khác của toán học cụ thể đều là siêu hình học. Cũng lưu ý rằng các hệ số nhị thức và cả giai thừa tăng và giảm đều là siêu hình học trong cả hai đối số của chúng

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True

Nói thêm, tất cả các ví dụ được hiển thị trước đó đều hợp lệ cho các đối số tuyến tính số nguyên

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True

Tuy nhiên, các đối số phi tuyến tính làm cho các chuỗi đó không phải là siêu hình học

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False

Nếu không chỉ cần kiến ​​thức về siêu hình học hay không, bạn có thể sử dụng hàm

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
4. Nó sẽ cố gắng đơn giản hóa biểu thức tổ hợp và nếu thuật ngữ đã cho là siêu hình học, nó sẽ trả về một thương của các đa thức có bậc nhỏ nhất. Nếu không thì is sẽ trả về \[None\] để nói rằng dãy không phải là siêu hình học.

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]

Tham khảo lớp bê tông #

lớp sympy. bê tông. tổng kết. Tổng[hàm , *symbols, **assumptions][source]#

Đại diện cho tổng kết chưa được đánh giá

Giải trình

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
5 đại diện cho một chuỗi hữu hạn hoặc vô hạn, với đối số đầu tiên là dạng tổng quát của các thuật ngữ trong chuỗi và đối số thứ hai là
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
6, với
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
7 lấy tất cả các giá trị nguyên từ
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
8 đến
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
9. Theo quy ước toán học lâu đời, thuật ngữ kết thúc được bao gồm trong tổng kết

Tổng hữu hạn

Đối với các tổng hữu hạn [và các tổng có giới hạn tượng trưng được giả định là hữu hạn], chúng ta tuân theo quy ước tổng được mô tả bởi Karr [1], đặc biệt là định nghĩa 3 của phần 1. 4. Tổng

\[\sum_{m \leq i < n} f[i]\]

có ý nghĩa rõ ràng cho \[m < n\] , cụ thể là.

\[\sum_{m \leq i < n} f[i] = f[m] + f[m+1] + \ldots + f[n-2] + f[n-1]\]

với giá trị giới hạn trên \[f[n]\] bị loại trừ. Tổng của một tập hợp rỗng bằng 0 khi và chỉ khi \[m = n\] .

\[\sum_{m \leq i < n} f[i] = 0 \quad \mathrm{for} \quad m = n\]

Cuối cùng, đối với tất cả các tổng khác trên các tập hợp rỗng, chúng ta giả sử định nghĩa sau

\[\sum_{m \leq i < n} f[i] = - \sum_{n \leq i < m} f[i] \quad \mathrm{for} \quad m > n\]

Điều quan trọng cần lưu ý là Karr xác định tất cả các khoản tiền với giới hạn trên là loại trừ. Điều này trái ngược với ký hiệu toán học thông thường, nhưng không ảnh hưởng đến quy ước tính tổng. Quả thực chúng ta có

\[\sum_{m \leq i < n} f[i] = \sum_{i = m}^{n - 1} f[i]\]

trong đó sự khác biệt trong ký hiệu là cố ý để nhấn mạnh ý nghĩa, với các giới hạn sắp chữ ở trên cùng là bao gồm

ví dụ

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
3

Dưới đây là các ví dụ để thực hiện tổng kết với các chỉ số tượng trưng. Bạn có thể sử dụng Hàm của các lớp IndexedBase

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2

Một ví dụ cho thấy rằng kết quả tượng trưng của phép tính tổng vẫn hợp lệ đối với các giá trị có vẻ vô nghĩa của các giới hạn. Sau đó, quy ước Karr cho phép chúng tôi đưa ra một giải thích hoàn toàn hợp lệ cho các tổng đó bằng cách hoán đổi các giới hạn theo các quy tắc trên

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
5

Một ví dụ rõ ràng về quy ước tổng kết Karr

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
6

Xem thêm

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
50,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
51,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
52

Người giới thiệu

[ R87 ]

Michael Karr, “Tổng kết trong các thuật ngữ hữu hạn”, Tạp chí ACM, Tập 28 Số 2, tháng 4 năm 1981, Trang 305-350 http. //dl. cm. tổ chức/trích dẫn. cfm?doid=322248. 322255

[ R88 ]

https. // vi. wikipedia. org/wiki/Tổng kết#Capital-sigma_notation

[ R89 ]

https. // vi. wikipedia. org/wiki/Empty_sum

euler_maclaurin[m=0, n=0, eps=0, eval_integral=True][source]#

Trả về một xấp xỉ Euler-Maclaurin của self, trong đó m là số lượng các số hạng đầu cần tính tổng trực tiếp và n là số lượng các số hạng ở đuôi

Với m = n = 0, đây đơn giản là tích phân tương ứng cộng với hiệu chỉnh điểm cuối cấp một

Trả về [s, e] trong đó s là xấp xỉ Euler-Maclaurin và e là sai số ước tính [được coi là độ lớn của số hạng bị bỏ qua đầu tiên ở đuôi]

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
0

Các điểm cuối có thể là tượng trưng

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
1

Nếu hàm là một đa thức bậc nhiều nhất là 2n+1, thì công thức Euler-Maclaurin trở nên chính xác [và e = 0 được trả về]

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
2

Với một eps khác không được chỉ định, phép tính tổng kết thúc ngay khi số hạng còn lại nhỏ hơn epsilon

eval_zeta_function[f , giới hạn][source]#

Kiểm tra xem hàm có khớp với hàm zeta không. Nếu khớp, thì trả về biểu thức \[Piecewise\] vì hàm zeta không hội tụ trừ khi \[s and \[q > 0\]

is_absolutely_convergent[][source] #>> factorial[n].is_hypergeometric[n] True >>> binomial[n, k].is_hypergeometric[n] True >>> rf[n, k].is_hypergeometric[n] True >>> ff[n, k].is_hypergeometric[n] True >>> gamma[n].is_hypergeometric[n] True >>> [2**n].is_hypergeometric[n] True 3

Xem thêm

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
53

Người giới thiệu

[ R90 ]

https. // vi. wikipedia. org/wiki/Absolute_convergence

is_convergent[][source] #>> factorial[n].is_hypergeometric[n] True >>> binomial[n, k].is_hypergeometric[n] True >>> rf[n, k].is_hypergeometric[n] True >>> ff[n, k].is_hypergeometric[n] True >>> gamma[n].is_hypergeometric[n] True >>> [2**n].is_hypergeometric[n] True 4

Xem thêm

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
54,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
55

Người giới thiệu

[ R91 ]

https. // vi. wikipedia. org/wiki/Convergence_tests

reverse_order[*chỉ số][source]#

Đảo ngược thứ tự của một giới hạn trong Sum

Giải trình

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
56 đảo ngược một số giới hạn trong biểu thức
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
57 có thể là một
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
5 hoặc một
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
51. Bộ chọn trong đối số
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
60 chỉ định một số chỉ số có giới hạn bị đảo ngược. Các bộ chọn này là tên biến hoặc chỉ số số được tính bắt đầu từ bộ giới hạn bên trong nhất

ví dụ

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
5

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
6

Mặc dù người ta nên ưu tiên đặt tên biến khi chỉ định giới hạn nào cần đảo ngược, ký hiệu đếm chỉ mục có ích trong trường hợp có một số ký hiệu có cùng tên

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
7

Tất nhiên chúng ta có thể kết hợp cả hai ký hiệu

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
8

Xem thêm

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
61,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
62,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
63

Người giới thiệu

[ R92 ]

Michael Karr, “Tổng kết trong các thuật ngữ hữu hạn”, Tạp chí ACM, Tập 28 Số 2, tháng 4 năm 1981, Trang 305-350 http. //dl. cm. tổ chức/trích dẫn. cfm?doid=322248. 322255

lớp sympy. bê tông. Mỹ phẩm. Sản phẩm[chức năng , *symbols, **assumptions][source]#

Đại diện cho các sản phẩm chưa được đánh giá

Giải trình

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
51 đại diện cho một sản phẩm hữu hạn hoặc vô hạn, với đối số đầu tiên là dạng tổng quát của các thuật ngữ trong chuỗi và đối số thứ hai là
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
6, với
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
7 lấy tất cả các giá trị nguyên từ
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
8 đến
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
9. Theo quy ước toán học lâu đời, thuật ngữ kết thúc được bao gồm trong sản phẩm

Sản phẩm hữu hạn

Đối với các tích hữu hạn [và các tích có giới hạn ký hiệu được coi là hữu hạn], chúng ta tuân theo quy ước tương tự của quy ước tổng được mô tả bởi Karr [1], đặc biệt là định nghĩa 3 của phần 1. 4. Sản phẩm

\[\prod_{m \leq i < n} f[i]\]

có ý nghĩa rõ ràng cho \[m < n\] , cụ thể là.

\[\prod_{m \leq i < n} f[i] = f[m] f[m+1] \cdot \ldots \cdot f[n-2] f[n-1]\]

với giá trị giới hạn trên \[f[n]\] bị loại trừ. Tích trên một tập hợp rỗng là một khi và chỉ khi \[m = n\] .

\[\prod_{m \leq i < n} f[i] = 1 \quad \mathrm{for} \quad m = n\]

Cuối cùng, đối với tất cả các sản phẩm khác trên các tập hợp rỗng, chúng tôi giả sử định nghĩa sau

\[\prod_{m \leq i < n} f[i] = \frac{1}{\prod_{n \leq i < m} f[i]} \quad \mathrm{for} \quad m > n

Điều quan trọng cần lưu ý là ở trên chúng tôi xác định tất cả các sản phẩm có giới hạn trên là độc quyền. Điều này trái ngược với ký hiệu toán học thông thường, nhưng không ảnh hưởng đến quy ước tích. Quả thực chúng ta có

\[\prod_{m \leq i < n} f[i] = \prod_{i = m}^{n - 1} f[i]\]

trong đó sự khác biệt trong ký hiệu là cố ý để nhấn mạnh ý nghĩa, với các giới hạn sắp chữ ở trên cùng là bao gồm

ví dụ

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
9

Sản phẩm của Wallis cho số pi

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
0

Tính toán trực tiếp hiện không thành công

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
1

Nhưng ta có thể tiệm cận tích vô hạn bằng một giới hạn của tích hữu hạn

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
2

Bằng công thức tương tự, chúng ta có thể tính sin[pi/2]

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
3

Sản phẩm có giới hạn dưới lớn hơn giới hạn trên

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
4

Sản phẩm rỗng

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
5

Một ví dụ cho thấy rằng kết quả tượng trưng của một sản phẩm vẫn có giá trị đối với các giá trị giới hạn dường như vô nghĩa. Sau đó, quy ước Karr cho phép chúng tôi đưa ra cách giải thích hoàn toàn hợp lệ cho các sản phẩm đó bằng cách hoán đổi các giới hạn theo các quy tắc trên

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
6

Một ví dụ rõ ràng về quy ước tổng Karr được áp dụng cho các sản phẩm

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
7

Và một cái khác

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
8

Xem thêm

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
5,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
50,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
01

Người giới thiệu

[ R93 ]

Michael Karr, “Tổng kết trong các thuật ngữ hữu hạn”, Tạp chí ACM, Tập 28 Số 2, tháng 4 năm 1981, Trang 305-350 http. //dl. cm. tổ chức/trích dẫn. cfm?doid=322248. 322255

[ R94 ]

https. // vi. wikipedia. org/wiki/Phép nhân#Capital_Pi_notation

[ R95 ]

https. // vi. wikipedia. org/wiki/Empty_product

is_convergent[][source] #>> factorial[n].is_hypergeometric[n] True >>> binomial[n, k].is_hypergeometric[n] True >>> rf[n, k].is_hypergeometric[n] True >>> ff[n, k].is_hypergeometric[n] True >>> gamma[n].is_hypergeometric[n] True >>> [2**n].is_hypergeometric[n] True 02 để biết giải thích về sự hội tụ trong SymPy

Giải trình

Sản phẩm vô tận

\[\prod_{1 \leq i < \infty} f[i]\]

được xác định bởi chuỗi các sản phẩm một phần

\[\prod_{i=1}^{n} f[i] = f[1] f[2] \cdots f[n]\]

khi n tăng không giới hạn. Tích hội tụ đến một giá trị khác 0 khi và chỉ khi tổng

\[\sum_{1 \leq i < \infty} \log{f[n]}\]

hội tụ

ví dụ

>>> binomial[n, k].is_hypergeometric[k]
True
>>> rf[n, k].is_hypergeometric[k]
True
>>> ff[n, k].is_hypergeometric[k]
True
9

Người giới thiệu

[ R96 ]

https. // vi. wikipedia. org/wiki/Infinite_product

reverse_order[*chỉ số][source]#

Đảo ngược thứ tự của một giới hạn trong Sản phẩm

Giải trình

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
03 đảo ngược một số giới hạn trong biểu thức
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
04 có thể là một
>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
5 hoặc một
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
51. Bộ chọn trong đối số
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
60 chỉ định một số chỉ số có giới hạn bị đảo ngược. Các bộ chọn này là tên biến hoặc chỉ số số được tính bắt đầu từ bộ giới hạn bên trong nhất

ví dụ

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
0

Mặc dù người ta nên ưu tiên đặt tên biến khi chỉ định giới hạn nào cần đảo ngược, ký hiệu đếm chỉ mục có ích trong trường hợp có một số ký hiệu có cùng tên

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
1

Tất nhiên chúng ta có thể kết hợp cả hai ký hiệu

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
8

Xem thêm

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
61,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
62,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
63

Người giới thiệu

[ R97 ]

Michael Karr, “Tổng kết trong các thuật ngữ hữu hạn”, Tạp chí ACM, Tập 28 Số 2, tháng 4 năm 1981, Trang 305-350 http. //dl. cm. tổ chức/trích dẫn. cfm?doid=322248. 322255

lớp sympy. bê tông. expr_with_intlimits. ExprWithIntLimits[hàm , *symbols, **assumptions][source]#

Siêu lớp cho Sản phẩm và Tổng

Xem thêm

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
11,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
12,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
13

change_index[var , trafo, newvar=None][source]#

Thay đổi chỉ mục của Tổng hoặc Sản phẩm

Thực hiện phép biến đổi tuyến tính \[x \mapsto a x + b\] trên biến chỉ mục . Đối với . For \[a\] giá trị duy nhất được phép là \[\pm 1\]. A new variable to be used after the change of index can also be specified.

Giải trình

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
14 trong đó
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
15 chỉ định biến chỉ mục \[x\] để chuyển đổi. Phép biến đổi
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
16 phải tuyến tính và được cho dưới dạng
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
15. Nếu đối số tùy chọn
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
18 được cung cấp thì
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
15 được thay thế bằng
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
18 trong biểu thức cuối cùng.

ví dụ

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
3

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
4

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
5

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
6

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
7

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
8

>>> factorial[2*n].is_hypergeometric[n]
True
>>> binomial[3*n+1, k].is_hypergeometric[n]
True
>>> rf[n+1, k-1].is_hypergeometric[n]
True
>>> ff[n-1, k+1].is_hypergeometric[n]
True
>>> gamma[5*n].is_hypergeometric[n]
True
>>> [2**[n-7]].is_hypergeometric[n]
True
9

Khi chỉ xử lý các ký hiệu, chúng ta có thể thực hiện một phép biến đổi tuyến tính tổng quát

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
0

Tuy nhiên, kết quả cuối cùng có thể không phù hợp với phép tính tổng thông thường khi chỉ số tăng dần luôn là 1. Điều này là hiển nhiên khi chúng ta chỉ lấy lại giá trị ban đầu cho

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
21 bằng +1 hoặc -1

Xem thêm

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
61,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
62,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
63,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
25,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
26

thuộc tính has_empty_sequence #

Trả về True nếu Tổng hoặc Sản phẩm được tính cho một chuỗi trống

ví dụ

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
1

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
2

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
3

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
4

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
5

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
6

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
7

Xem thêm

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
27,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
28

index[x][source]>> factorial[n].is_hypergeometric[n] True >>> binomial[n, k].is_hypergeometric[n] True >>> rf[n, k].is_hypergeometric[n] True >>> ff[n, k].is_hypergeometric[n] True >>> gamma[n].is_hypergeometric[n] True >>> [2**n].is_hypergeometric[n] True 29 trả về chỉ số của biến giả
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
30 trong giới hạn của
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
04. Lưu ý rằng chúng tôi bắt đầu đếm với 0 ở bộ giới hạn trong cùng nhất

ví dụ

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
8

Xem thêm

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
62,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
33,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
25,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
26

sắp xếp lại[*arg][source]#

Sắp xếp lại các giới hạn trong một biểu thức có chứa Tổng hoặc Tích

Giải trình

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
36 sắp xếp lại các giới hạn trong biểu thức
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
04 theo danh sách các bộ được cung cấp bởi
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
38. Các bộ dữ liệu này có thể chứa các chỉ mục số hoặc tên biến chỉ mục hoặc bao gồm cả hai

ví dụ

>>> factorial[n**2].is_hypergeometric[n]
False
>>> [2**[n**3 + 1]].is_hypergeometric[n]
False
9

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
0

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
1

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
2

Chúng ta cũng có thể chọn các biến chỉ mục bằng cách đếm chúng, bắt đầu với biến trong cùng

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
3

Và tất nhiên chúng ta có thể kết hợp cả hai kế hoạch

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
4

Xem thêm

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
62,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
40,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
25,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
26

reorder_limit[x , y][source]#

Hoán đổi hai bộ giới hạn của biểu thức Tổng hoặc Tích

Giải trình

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
43 trao đổi hai bộ giới hạn. Các đối số
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
30 và
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
45 là các số nguyên tương ứng với các biến chỉ số của hai giới hạn sẽ được hoán đổi cho nhau. Biểu thức
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
04 phải là Tổng hoặc Tích

ví dụ

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
5

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
6

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
7

Xem thêm

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
40,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
33,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
25,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
26

Chức năng cụ thể Tham khảo #

sympy. bê tông. tổng kết. tổng[f , *symbols, **kwargs][source]#

Tính tổng của f đối với các ký hiệu

Giải trình

Ký hiệu cho các ký hiệu tương tự như ký hiệu được sử dụng trong Tích phân. summation[f, [i, a, b]] tính tổng của f đối với i từ a đến b, i. e. ,

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
8

Nếu nó không thể tính tổng, nó sẽ trả về một đối tượng Sum chưa được đánh giá. Các tổng lặp lại có thể được tính bằng cách đưa vào các bộ ký hiệu bổ sung

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
9

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
30

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
31

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
32

Xem thêm

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
5,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
51,
>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
52

sympy. bê tông. Mỹ phẩm. sản phẩm[*đối số , **kwargs][source]#

tính sản phẩm

Giải trình

Ký hiệu cho các ký hiệu tương tự như ký hiệu được sử dụng trong Tổng hoặc Tích phân. product[f, [i, a, b]] tính tích của f đối với i từ a đến b, i. e. ,

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
33

Nếu nó không thể tính toán sản phẩm, nó sẽ trả về một đối tượng Sản phẩm chưa được đánh giá. Các sản phẩm lặp lại có thể được tính toán bằng cách đưa vào các bộ ký hiệu bổ sung

>>> hypersimp[factorial[2*n], n]
2*[n + 1]*[2*n + 1]
>>> hypersimp[factorial[n**2], n]
9

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
35

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
36

sympy. bê tông. ngỗng cái. gosper_normal[f , g, n, polys=True][source]#

Tính dạng chuẩn của Gosper của

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
54 và
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
55

Giải trình

Cho các đa thức một biến nguyên tố tương đối

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
54 và
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
55, hãy viết lại thương của chúng thành dạng chuẩn tắc được định nghĩa như sau

\[\frac{f[n]}{g[n]} = Z \cdot \frac{A[n] C[n+1]}{B[n] C[n]}\]

trong đó

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
58 là một hằng số tùy ý và
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
59,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
60,
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
61 là các đa thức monic trong
>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
62 với các tính chất sau

  1. \[\gcd[A[n], B[n+h]] = 1 \forall h \in \mathbb{N}\]

  2. \[\gcd[B[n], C[n+1]] = 1\]

  3. \[\gcd[A[n], C[n]] = 1\]

Dạng chuẩn này, hay nói cách khác là phân tích thừa số hữu tỷ, là một bước quan trọng trong thuật toán Gosper và trong việc giải các phương trình sai phân. Nó cũng có thể được sử dụng để quyết định xem hai thuật ngữ siêu hình học có giống nhau hay không

Thủ tục này sẽ trả về một bộ chứa các phần tử của phân tích thừa số này ở dạng

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
63

ví dụ

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
37

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
38

sympy. bê tông. ngỗng cái. gosper_term[f , n][source]#

Tính toán thuật ngữ siêu hình học của Gosper cho

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
54

Giải trình

Giả sử

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
54 là một số hạng siêu hình học sao cho

\[s_n = \sum_{k=0}^{n-1} f_k\]

\[f_k\] không phụ thuộc vào \[n\]. Returns a hypergeometric term \[g_n\] sao cho \[g_{n+1} - g_n = f_n . .

ví dụ

>>> from sympy import *
>>> n, k = symbols['n,k']
>>> [n**2 + 1].is_hypergeometric[n]
True
39

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
0

sympy. bê tông. ngỗng cái. gosper_sum[f , k][source]#

Thuật toán tổng kết siêu hình học của Gosper

Giải trình

Cho một số hạng siêu hình học

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
54 sao cho

\[s_n = \sum_{k=0}^{n-1} f_k\]

\[f[n]\] không phụ thuộc vào \[n\] . , returns \[g_{n} - g[0]\] where \[g_{n+1} - g_n = f_n\], or

>>> factorial[n].is_hypergeometric[n]
True
>>> binomial[n, k].is_hypergeometric[n]
True
>>> rf[n, k].is_hypergeometric[n]
True
>>> ff[n, k].is_hypergeometric[n]
True
>>> gamma[n].is_hypergeometric[n]
True
>>> [2**n].is_hypergeometric[n]
True
67 if \[s_n\] cannot be expressed in closed form as a sum of hypergeometric terms.

ví dụ

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
1

>>> f = Function['f']
>>> Sum[f[n], [n, 0, 3]].doit[]
f[0] + f[1] + f[2] + f[3]
>>> Sum[f[n], [n, 0, oo]].doit[]
Sum[f[n], [n, 0, oo]]
>>> f = IndexedBase['f']
>>> Sum[f[n]**2, [n, 0, 3]].doit[]
f[0]**2 + f[1]**2 + f[2]**2 + f[3]**2
2

Người giới thiệu

[ R98 ]

Marko Petkovsek, Herbert S. Wilf, Doron Zeilberger, A = B, AK Peters, Ltd. , Wellesley, MA, USA, 1997, trang. 73–100

Chủ Đề