2

我想找到垂直渐近线:

f=(3x^3 + 17x^2 + 6x + 1)/(2x^3 - x + 3)

所以我想找到 (2x^3 - x + 3) 的根,所以我写道:

 import sympy as sy
 x = sy.Symbol('x', real=True)
 asym1 = sy.solve(2*x**3-x+3,x)
 for i in range(len(asym1)):
     asym1[i] = asym1[i].evalf()
 print(asym1)


输出是:

[0.644811950742531 + 0.864492542166306*I, 0.644811950742531 - 
0.864492542166306*I, -1.28962390148506]

所以现在输出中唯一有意义的数字是-1.289,复数没有任何意义。

我的问题是:我怎样才能只选择实数所以输出显示:

asym1 = -1.28962390148506
4

2 回答 2

3

你可以做:

asym1 = [n for n in asym1 if n.is_real][0]    
于 2018-07-28T19:59:34.183 回答
1

复数是complex类的实例,而实数是floats:

asym1 = [x for x in asym1 if isinstance(x, float)]
于 2018-07-28T20:03:36.203 回答