处理“Python使用sympy求解一元三次方程返回结果含I”的问题

使用Python的sympy库求解一元三次方程时,结果包含复数'I',导致处理困难。通过将结果转化为字符串,删除'I'后的内容,再转回浮点数,可以解决这个问题。示例代码展示了如何提取并处理正实数根。
摘要由CSDN通过智能技术生成

在python中使用sympy进行一元三次方程求解的时候,返回值会带I,这些带I的数据很难处理。

import sympy
P = 0.2
Q = 1200
t = sympy.Symbol("x")
f = 6.81*t**3+7.73*t**2+0.23*t-P
t = sympy.solve(f)
print(t)

当输入以上代码后,可以看到结果为:

[-1.07853349308902 + 0.e-23*I, -0.19570234514663 + 0.e-21*I, 0.139140390364868 + 0.e-21*I]

使用isinstance()判断后会得出该sympy返回的3个根不是复数的结果。

# 判断是否为复数
for i in range(0,3):
    if isinstance(t[i], complex):
        print("t["+str(i)+"]是复数")
    else:
        print("t["+str(i)+"]不是复数")
t[0]不是复数
t[1]不是复数
t[2]不是复数

而得到的结果很难处理,之后我又试了试,发现这个带I的玩意既不是int也不是float也不是str。

最后我找了解决办法,先转化成str,然后把空格后头的切掉,只保留前头的数字,之后再转化成float,就可以当成正常数字转化了。

float(str(t[i]).split(" ")[0])

将程序完整的跑一次

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值