Spaces:
Sleeping
Sleeping
| def finite_diff(expression, variable, increment=1): | |
| """ | |
| Takes as input a polynomial expression and the variable used to construct | |
| it and returns the difference between function's value when the input is | |
| incremented to 1 and the original function value. If you want an increment | |
| other than one supply it as a third argument. | |
| Examples | |
| ======== | |
| >>> from sympy.abc import x, y, z | |
| >>> from sympy.series.kauers import finite_diff | |
| >>> finite_diff(x**2, x) | |
| 2*x + 1 | |
| >>> finite_diff(y**3 + 2*y**2 + 3*y + 4, y) | |
| 3*y**2 + 7*y + 6 | |
| >>> finite_diff(x**2 + 3*x + 8, x, 2) | |
| 4*x + 10 | |
| >>> finite_diff(z**3 + 8*z, z, 3) | |
| 9*z**2 + 27*z + 51 | |
| """ | |
| expression = expression.expand() | |
| expression2 = expression.subs(variable, variable + increment) | |
| expression2 = expression2.expand() | |
| return expression2 - expression | |
| def finite_diff_kauers(sum): | |
| """ | |
| Takes as input a Sum instance and returns the difference between the sum | |
| with the upper index incremented by 1 and the original sum. For example, | |
| if S(n) is a sum, then finite_diff_kauers will return S(n + 1) - S(n). | |
| Examples | |
| ======== | |
| >>> from sympy.series.kauers import finite_diff_kauers | |
| >>> from sympy import Sum | |
| >>> from sympy.abc import x, y, m, n, k | |
| >>> finite_diff_kauers(Sum(k, (k, 1, n))) | |
| n + 1 | |
| >>> finite_diff_kauers(Sum(1/k, (k, 1, n))) | |
| 1/(n + 1) | |
| >>> finite_diff_kauers(Sum((x*y**2), (x, 1, n), (y, 1, m))) | |
| (m + 1)**2*(n + 1) | |
| >>> finite_diff_kauers(Sum((x*y), (x, 1, m), (y, 1, n))) | |
| (m + 1)*(n + 1) | |
| """ | |
| function = sum.function | |
| for l in sum.limits: | |
| function = function.subs(l[0], l[- 1] + 1) | |
| return function | |