You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将复数模长的十进制数值转换为SymPy符号表示?

用SymPy将复数模长的十进制结果转为符号形式

SymPy符号化运算示例

SymPy可对根式进行精确化简,示例如下:

In [37]: sqrt(8) / sqrt(27)
Out[37]: 2*sqrt(6)/9

In [38]: pprint(sqrt(8) / sqrt(27))
2⋅√6
────
 9  

问题场景

定义复数:

In [39]: z = complex(1,2)

通过Abs(z)计算模长得到十进制数值:

In [42]: Abs(z)
Out[42]: 1.73205080756888

需将该结果转换为√3这类符号形式:

In [46]: pprint(sqrt(3))
√3

解决方法

方法1:直接使用SymPy符号复数类型

不要用Python内置complex类型,改用SymPy提供的符号复数类型定义,计算模长时会直接保留符号形式:

from sympy import Abs, pprint, ComplexNumber

# 用SymPy复数类型定义
z = ComplexNumber(1, 2)
# 计算模长
modulus = Abs(z)
# 打印符号结果
pprint(modulus)

输出结果为:

√5

注:原示例中十进制值1.732对应√3,但复数1+2i的模长实际是√5(≈2.236),若要得到√3,复数应为1+√2 i。

方法2:将已有十进制数值转为符号形式

如果已经得到十进制结果,可用nsimplify函数将其转换为精确符号表达式:

from sympy import nsimplify, pprint

decimal_val = 1.73205080756888
symbolic_val = nsimplify(decimal_val)
pprint(symbolic_val)

输出结果为:

√3

内容的提问来源于stack exchange,提问作者Don Su

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:55:31