Почему `pprint()` в Sympy не работает для цикла?

Это мой код

 14 def sum(output):
 15     result = 0
 16     for x, w in zip(output[0], output[1]):
 17         result+=w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2)
 18         pprint(w*exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2))
 19     return ((b-a)/2.0)*result

Для этого кода, если я вызываю функцию sum мой вывод на терминал выведет:

0.548543700179284
0.6
0.692267362730138
0.0
0.252818105473090
0.6

но если

 14 def sum(output):
 15     result = 0
 16     for x, w in zip(output[0], output[1]):
 17         result+=w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2)
 18     return ((b-a)/2.0)*result
 19
 20 pprint(w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2))

Он выведет красивое уравнение (я имею в виду pprint() это работает!).

Почему первый код не может распечатать красивое уравнение, как второй код?

1 ответ

Решение

Трудно сказать без контекста, но, вероятно, потому что w а также x определяются как внутри, так и снаружи вашей функцииsum(),

Также обратите внимание, что две строки не совпадают:

pprint(w*exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2))
pprint(w*np.exp(-((((b-a)/2.0)*x)+((a+b)/2.0))**2))
Другие вопросы по тегам