Я пытаюсь суммировать функцию в python, используя sympy. Моя функцияСуммирование функции с символическим выходом с sympy
x=symbols('x')
def f(k):
if k==0:
return x
else:
return 1
Если спросить, что F (0), я х, и я могу с радостью просить такие вещи, как
integrate(f(0),(x,0,1))
и я получаю 1/2, как я бы ожидать.
Но если я пишу
summation(f(i),(i,0,3))
я получаю 4, а не х + 3. Это кажется немного странным, тем более, что если я не указываю функцию F и пойти на
f=Function('f')
затем
summation(f(i),(i,0,3))
дает мне е (0) + F (1) + F (2) + F (3). Итак, почему, когда f определяется, как указано выше, я получаю 4, а не x + 3?
Добавлено позже: Я только заметил, что мне даже не нужен символ x для того, чтобы поведение не было тем, что я ожидаю. Например
def f(k):
if k==0:
return 100
else:
return 1
summation(f(i),(i,0,3))
возвращает 4, а не 103.
Поскольку функция 'f' является функцией черного ящика, sympy не может ее проверять, поэтому я предполагаю, что используется суммирующая интеграция. –
Откуда взялось 'i' из' sumation (f (i), (i, 0,3))?? Я чувствую, что 'f (i)' здесь просто 1, а не функция. – user2357112
@ user2357112 Я забыл сказать, что там должен быть символ i = ('i'). И я не думаю, что меня можно рассматривать как 1, потому что тогда суммирование (f (i), (i, 0,3)) не даст мне f (0) + f (1) + f (2) + f (3) – Kirby