如何获得同情点的浮点值?

How to get the float values for a sympy point?

我有如下一段代码

from sympy import Point, Line

l1 = Line((3,5,-2), (1,-1,4))
p1 = Point3D((3, 7, 9))

intersection_p = p1.intersection(l1)[0]
print(intersection_p)

我明白了

Point3D(30/7, 62/7, -41/7)

但是,我想要浮点值,而不是有理数。

[4.285714285714286, 8.857142857142858, -5.857142857142857]

我已经这样做了,它给了我想要的输出。

intersection1 = [float(i) for i in p1.intersection(l1)[0].args]

但我想知道是否有任何 sympy 方法可以 converts/extracts Point3D 对象的坐标值作为 float.

您可以像使用正则符号表达式一样使用 evalf()。您可以使用 tuple(p1.evalf())list(p1.evalf()) 以更标准的 Python 方式获得数字。

from sympy import Point3D, sqrt, pi

p1 = Point3D((sqrt(2), 7, pi/2))

print(p1)
print(p1.evalf())

输出:

Point3D(sqrt(2), 7, pi/2)
Point3D(1.4142135623731, 7.0, 1.5707963267949)

注意evalf()接受一个参数表示位数。