python - 如何在 sympy 中指定非负实数
问题描述
我正在符号数学中进行一些大型操作,这花费了太长时间(不合我的口味),我想测试将一些假设烘焙到符号中是否会加快速度。自变量为 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 似乎坚持认为它必须是复数,而且是 Hermitian 矩阵?或者是(1-元素)厄密矩阵的实标量特例?我认为我没有足够的数学课知道这一点
我也不确定是否positive=True
包括t
为零的可能性。该文档似乎也没有解释这些参数的确切含义或它们的解释方式。
如果这是相关的:我使用的是 SYmpy 0.7.6。我知道这已经相当老了,但升级不是一种选择,因为程序需要在更新计划不是我决定的机器上运行......
解决方案
所有实数都是复数,但并非所有实数都有虚数部分;实数的虚部是 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]
推荐阅读
- php - ajax codeigniter 双重依赖下拉菜单
- ios - 使用另一个类的 insertNewObject 添加的行未显示在表视图中
- php - 让 Laravel 5.8 计算其他字段中的数据,而不仅仅是 unsignedInteger
- ios - SwiftUI:.transition 将 ZStack 中的对齐方式从中心更改为顶部?
- java - 在这个程序中,为什么 JOptionPane 条件满足时不显示?
- xcode - xcrun:错误:无法找到实用程序“simctl”,不是开发人员工具或 PATH
- javascript - 使用 axios 发布请求获取错误 400
- django - Django:存储用户在 Django 项目中共享的上传文件(pdf、文档)的最佳位置在哪里?
- apache-kafka - 当记录处理时间超过“max.poll.interval.ms”时,偏移提交会发生什么?
- docker - 端口绑定8080时Docker无法访问Host中的应用程序