簡體   English   中英

避免復數符號

[英]Avoid Complex Number Sympy

我正在使用sympy解析來解析字符串:

f = parse_expr('(x-1)^(1/3)')

當我使用f.subs({x:0})它給出的是復數而不是-1。 我該如何擺脫這種行為?

我需要一些通用的東西,因為函數可以是任意的,而且我不知道會有什么變量。

謝謝。

查看代碼並找出函數real_root ,我設法使用轉換來編寫自己的轉換器。

您的解決方案似乎是最好的解決方案。 您也許也可以象征性地進行替換,而不必嘗試更改解析器。 看一下atomsxreplace

我只想補充一點,SymPy使用以下約定:小數冪是具有最小復雜參數的原始根。 Python本身遵循以下約定:

>>> (-1+0j)**(1/3)
(0.5000000000000001+0.8660254037844386j)

這樣做有很多充分的理由。 最明顯的是,數字的第二和第三次冪將為您提供另外兩個根源:

>>> (-1+0j)**(2/3)
(-0.4999999999999998+0.8660254037844388j)
>>> (-1+0j)**(3/3)
(-1+0j)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM