相关疑难解决方法(0)

python中复数的平方根

我遇到了一些混乱的行为,在python中使用复数的平方根.运行此代码:

from cmath import sqrt
a = 0.2
b = 0.2 + 0j
print(sqrt(a / (a - 1)))
print(sqrt(b / (b - 1)))
Run Code Online (Sandbox Code Playgroud)

给出输出

0.5j
-0.5j
Run Code Online (Sandbox Code Playgroud)

类似的事情发生在

print(sqrt(-1 * b))
print(sqrt(-b))
Run Code Online (Sandbox Code Playgroud)

看来这些陈述对应该给出相同的答案吗?

python math complex-numbers

14
推荐指数
1
解决办法
5081
查看次数

将 Python 复杂字符串输出(如 (-0-0j))转换为等效的复杂字符串

在 Python 中,我想要一种将其复数字符串输出转换为等效字符串表示的好方法,当由 Python 解释时,该表示给出相同的值。

基本上,我想要complexStr2str(s: str): str具有与eval(complexStr2str(str(c)))无法区分的属性的函数c,对于任何c其值类型为 complex 的函数。然而,complexStr2str()只需要处理复杂值str()repr()输出的字符串模式类型。注意对于复数值str()repr()做同样的事情。

我所说的“不可区分”并不是==Python 意义上的;你可以定义(或重新定义)它意味着你想要的任何东西;“不可区分”意味着如果a程序中有代表某个值的字符串,并将程序中的字符串替换为字符串b(可能正好是a),则无法区分 Python 程序的运行和替换程序,缺乏对程序的内省。

请注意,尽管前者是 Python 将为or输出的内容(-0-0j)-0j但这与. 如下面的交互式会话所示,实部和虚部为 -0.0,实部和虚部为0.0。str(-0j)repr(-0j)-0jfloat-0-0jfloat

问题是像值的存在而变得更加困难naninf。尽管在 Python 3.5+ ish 中您可以importmath中获取这些值,但出于各种原因,我想避免这样做。不过使用float("nan")是没问题的。

考虑这个 Python 会话:

>>> -0j
(-0-0j)
>>> -0j.imag …
Run Code Online (Sandbox Code Playgroud)

python complex-numbers python-3.x

2
推荐指数
1
解决办法
471
查看次数

标签 统计

complex-numbers ×2

python ×2

math ×1

python-3.x ×1