конфликт сюжета sympy с кусочной функцией

Я создал кусочную функцию, используя sympy:

x= symbols('x')

XL = (1-x)**2
XH = (x-1)**1.5

XX= Piecewise((XL,x<=1),(XH,x>1))
plot(XX,(x,0,2),adaptive=False, num_of_points=200)

Он работает для вычисления XX при любом значении x между 0 и 2 (только интересующий диапазон).

Когда я рисую его, он возвращает ошибку, что отрицательное число нельзя возвести в дробную степень, чего никогда не должно происходить, поскольку дробная степень применяется только тогда, когда x больше 1.

По какой-то причине он обрабатывает обе части в полном диапазоне? есть идеи?


person Milothicus    schedule 26.06.2014    source источник
comment
Я предполагаю, что проблема заключается в числовом шуме около нуля. Сообщите об этом как об ошибке на github github.com/sympy/sympy. Обходной путь будет заключаться в том, чтобы взять реальную часть вашего выражения и построить ее.   -  person Krastanov    schedule 27.06.2014
comment
Другими словами, постройте re(XX).   -  person asmeurer    schedule 27.06.2014


Ответы (1)


В конце концов, обходной путь, который я использовал, был abs(x-1):

x= symbols('x')
XL = (1-x)**2
XH = abs(x-1)**1.5

XX= Piecewise((XL,x<=1),(XH,x>1))
plot(XX,(x,0,2),adaptive=False, num_of_points=200)

это правильно, когда номер действительно будет использоваться, и позволяет избежать ошибки. Я также отправил сообщение об ошибке на Github.

person Milothicus    schedule 13.08.2014