Как указать неотрицательное вещественное число в симпы - PullRequest
0 голосов
/ 06 марта 2020

Я выполняю несколько больших операций с символами c по математике, которые занимают слишком много времени (на мой вкус), и я хотел проверить, может ли запоминание некоторых предположений относительно символов ускорить процесс немного. Независимой переменной является t.

Однако я нахожу это:

>>> t = sympy.Symbol('t', positive=True)
>>> t.is_complex
True

Означает ли это, что Sympy принимает комплексные значения? В то же время:

>>> t.is_real
True

Что? Это настоящее или сложное число? Давайте попробуем сделать это явно:

>>> t = sympy.Symbol('t', negative=False, real=True, complex=False)
*** InconsistentAssumptions: {'real': True, 'imaginary': False, 'hermitian': True, 'complex': True, 'commutative': True}, complex=False

Итак ... Я явно не понимаю, как работает определение символа. Я хотел бы получить положительное действительное число, т.е. не комплексное число, но по какой-то причине Sympy, похоже, настаивает на том, что оно должно быть сложным, а также на эрмитовой матрице? Или реальные скаляры являются частными случаями (1-элементных) эрмитовых матриц? Я не думаю, что у меня было достаточно уроков по математике, чтобы знать, что

Я также не уверен, включает ли positive=True возможность для t быть нулем. Документация , похоже, не объясняет, что именно означают аргументы или как они интерпретируются.

В случае, если это уместно: я использую SYmpy 0.7.6. Я знаю, что это довольно старое, но обновление не вариант, потому что программа должна работать на машинах, расписание обновления которых не мое решение ...

1 Ответ

1 голос
/ 06 марта 2020

Все действительные числа являются сложными, но не все действительные числа имеют мнимую составляющую; мнимая часть действительного числа равна 0 (но это не делает число не сложным):

>>> Symbol('x', real=True).as_real_imag()
(x, 0)

Поскольку все вещественные числа сложны, вы не можете сказать, что они действительны и не сложны. Это может помочь подумать о вещественных числах, рациональных числах и целых числах: все целые числа рациональны (со знаменателем 1), но не все рациональные числа являются целыми числами. Все рациональные числа реальны, но не все реальные рациональны.

Положительные, неотрицательные, нулевые, неположительные и отрицательные обозначения имеют свои обычные значения. Вы всегда можете попросить SymPy рассказать, как он просматривает число, чтобы лучше понять типы:

>>>> from sympy import Tuple
>>> [i.is_positive for i in Tuple(-1, 0, 1)]
[False, True, True]
>>> [i.is_nonnegative for i in Tuple(-1, 0, 1)]
[False, True, True]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...