def test_issue_6966(): i, k, m = symbols('i k m', integer=True) z_i, q_i = symbols('z_i q_i') a_k = Sum(-q_i*z_i/k,(i,1,m)) b_k = a_k.diff(z_i) assert isinstance(b_k, Sum) assert b_k == Sum(-q_i/k,(i,1,m))
def series_small_a(): """Tylor series expansion of Phi(a, b, x) in a=0 up to order 5. """ order = 5 a, b, x, k = symbols("a b x k") A = [] # terms with a X = [] # terms with x B = [] # terms with b (polygammas) # Phi(a, b, x) = exp(x)/gamma(b) * sum(A[i] * X[i] * B[i]) expression = Sum(x**k / factorial(k) / gamma(a * k + b), (k, 0, S.Infinity)) expression = gamma(b) / sympy.exp(x) * expression # nth term of taylor series in a=0: a^n/n! * (d^n Phi(a, b, x)/da^n at a=0) for n in range(0, order + 1): term = expression.diff(a, n).subs(a, 0).simplify().doit() # set the whole bracket involving polygammas to 1 x_part = (term.subs(polygamma(0, b), 1).replace(polygamma, lambda *args: 0)) # sign convetion: x part always positive x_part *= (-1)**n A.append(a**n / factorial(n)) X.append(horner(x_part)) B.append(horner((term / x_part).simplify())) s = "Tylor series expansion of Phi(a, b, x) in a=0 up to order 5.\n" s += "Phi(a, b, x) = exp(x)/gamma(b) * sum(A[i] * X[i] * B[i], i=0..5)\n" for name, c in zip(['A', 'X', 'B'], [A, X, B]): for i in range(len(c)): s += f"\n{name}[{i}] = " + str(c[i]) return s
def test_eval_diff(): assert Sum(x, (x, 1, 2)).diff(x) == 0 assert Sum(x * y, (x, 1, 2)).diff(x) == 0 assert Sum(x * y, (y, 1, 2)).diff(x) == Sum(y, (y, 1, 2)) e = Sum(x * y, (x, 1, a)) assert e.diff(a) == Derivative(e, a) assert Sum(x * y, (x, 1, 3), (a, 2, 5)).diff(y) == Sum(x * y, (x, 1, 3), (a, 2, 5)).doit().diff(y) == 24
def test_eval_diff(): assert Sum(x, (x, 1, 2)).diff(x) == 0 assert Sum(x * y, (x, 1, 2)).diff(x) == 0 assert Sum(x * y, (y, 1, 2)).diff(x) == Sum(y, (y, 1, 2)) e = Sum(x * y, (x, 1, a)) assert e.diff(a) == Derivative(e, a) assert Sum(x*y, (x, 1, 3), (a, 2, 5)).diff(y) == \ Sum(x*y, (x, 1, 3), (a, 2, 5)).doit().diff(y) == 24
plt.loglog(Ns, [psf_to_sigma(g15, N, 0, 0) for N in Ns]) plt.loglog(Ns, [psf_to_sigma(airy, N, 0, 0) for N in Ns]) plt.loglog(Ns, [psf_to_sigma(img, N, 0, 0) for N in Ns]) # %% from sympy import Function, Sum, symbols, ln, Eq from sympy.abc import N, i η, ζ = symbols('ζ,η') P = Function('P')(ζ, η) l = Sum(ln(P), (i, 1, N)) l # %% l.diff(η, 2).simplify() # %% (l.diff(η, 1) ** 2).simplify() # %% from astropy.modeling.functional_models import Gaussian1D # %% def fisher(pdf_grid, dx): normed = pdf_grid / np.trapz(pdf_grid, dx=dx) grad = np.gradient(normed, dx) return np.trapz(grad ** 2 / normed, dx=dx)