Я потратил неделю на математические исследования, основанные на вычислении, которое оказалось неверным из-за ошибки в упрощении кусочных функций в Sympy. Кто-нибудь знает, почему возникает эта ошибка? Мне кажется очень странным, что функция Sympy.simplify() может преобразовать выражение во что-то другое, что при вычислении дает другое значение. Я использую:
Версия Python: 3.10.9
Версия Sympy: 1.11.1.
Вот MWE.
import sympy as sp
from sympy import Piecewise, Eq, cos, sin, Ne
j = sp.symbols('j', real=True)
function = Piecewise((0, Eq(j, 0)), (-Piecewise((0, Ne(j, 0)), (2, True)), True)) - Piecewise((0, Eq(j, 0)), (-Piecewise((1, Ne(j, 0)), (0, True)), True))
function_simple = sp.simplify(function)
print(function.subs({j:1})) #prints 1
print(function_simple.subs({j:1})) #prints -1
Примечание: я только что попробовал это в Google Colab с Sympy 1.13.3 и Python 3.10.12, и результат правильный. Думаю, это ошибка, исправленная в новых версиях Sympy.
Я потратил неделю на математические исследования, основанные на вычислении, которое оказалось неверным из-за ошибки в упрощении кусочных функций в Sympy. Кто-нибудь знает, почему возникает эта ошибка? Мне кажется очень странным, что функция Sympy.simplify() может преобразовать выражение во что-то другое, что при вычислении дает другое значение. Я использую: Версия Python: 3.10.9 Версия Sympy: 1.11.1. Вот MWE. [code]import sympy as sp from sympy import Piecewise, Eq, cos, sin, Ne
print(function.subs({j:1})) #prints 1 print(function_simple.subs({j:1})) #prints -1 [/code] Примечание: я только что попробовал это в Google Colab с Sympy 1.13.3 и Python 3.10.12, и результат правильный. Думаю, это ошибка, исправленная в новых версиях Sympy.
Скажи, что у меня есть определение:
def foo (d: D , e: E ) -> F : ...
Существует ли способ (в Python 3.13) для упрощения (по типам VARS/Aliases), чтобы сделать это более конденсированием, сохраняя при этом печи, такие как Pyright Happy?...