Sympy 复数符号的绝对值和自变量

标签 sympy simplification

在使用 Sympy 进行符号数学时,我遇到了以下问题:

from sympy import *
txx, tyx, txy, tyy, tp, tn = symbols('t_xx t_yx t_xy t_yy t_p t_n', complex=True)

#define a complex symbol
tp = txx-I*tyx

Abs(tp), arg(tp)
#will just return |txx-i*tyx|, arg(txx-i*tyx)

但是,返回的绝对值和参数并不像您期望的复数那样采用 sqrt(txx**2+tyx**2), atan(tyx/txx) 形式.

我也尝试过

simplify(Abs(tp).expand(complex=True))
#returns |Retxx-i*Retyx+i*Imtxx+Imtxy|, but no further simplification

它再次适用于复数,但不适用于此处定义的复数符号。这是还没有实现还是我做得不对?

最佳答案

如果您使用属性 real=True 定义交易品种列表,那么您将获得 Abs(tp) 的正确表达式。由于您的 sympy 符号被指定为复数,那么 Abs() 不知道这些片段 txx、tyx 等的实部和虚部,因此 Abs() 的输出无法提供您所期望的结果。

关于Sympy 复数符号的绝对值和自变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418449/

相关文章:

objective-c - 为什么 iPhone 示例代码使用了这么多中间变量?

c# - 简化嵌套的 IF 语句

php - 需要帮助简化我的 php 表

Python:简化计数程序

python - SymPy 矩阵参数不可比较

python - 为什么我会收到此错误以及如何修复它?

python - 简单表达式解析会抛出引用 'AssumptionKeys' 的 TypeError

python - 使用 Python 在闭区间上查找函数的最小值

SymPy动态符号,如何设置二阶导数消失?

mysql - 任何人都可以简化这个mysql select的where条件吗