Проблема с использованием Sympy для упрощения кусочных функций ⇐ Python

Программы на Python
Anonymous
Проблема с использованием Sympy для упрощения кусочных функций

Сообщение Anonymous »

Я потратил неделю на математические исследования, основанные на вычислении, которое оказалось неверным из-за ошибки в упрощении кусочных функций в 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.


Подробнее здесь: https://stackoverflow.com/questions/790 ... -functions

Вернуться в «Python»