以十进制形式返回解,而不是sympy中的精确值

2024-09-29 02:15:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Symphy解以下三个方程:

t(x-40cos(70))=-300cos(40)
t(y-40sin(70))=300sin(40)
x^2+y^2=250^2

我有一行代码返回解决方案:

print(nonlinsolve([Eq(x*t-40*t*cos(70), -300*cos(40)),
                   Eq(y*t-40*t*sin(70), 300*sin(40)),
                   Eq(x**2 + y**2, 250**2)],
                   [x, y, t]))

但是,它返回的值的格式完全相同:

FiniteSet((10*(sqrt(-16*sin(70)**2*cos(40)**2 - 16*sin(40)**2*cos(70)**2 - 32*sin(40)*sin(70)*cos(40)*cos(70) + 625*cos(40)**2 + 625*sin(40)**2)*cos(40) + 4*sin(40)*sin(70)*cos(40) + 4*sin(40)**2*cos(70))/(cos(40)**2 + sin(40)**2), 10*(-sqrt(-16*sin(70)**2*cos(40)**2 - 16*sin(40)**2*cos(70)**2 - 32*sin(40)*sin(70)*cos(40)*cos(70) + 625*cos(40)**2 + 625*sin(40)**2)*sin(40) + 4*sin(40)*cos(40)*cos(70) + 4*sin(70)*cos(40)**2)/(cos(40)**2 + sin(40)**2), 30*sqrt(-16*sin(70)**2*cos(40)**2 - 16*sin(40)**2*cos(70)**2 - 32*sin(40)*sin(70)*cos(40)*cos(70) + 625*cos(40)**2 + 625*sin(40)**2)/(-625 + 16*cos(70)**2 + 16*sin(70)**2) + 120*(-sin(40)*sin(70) + cos(40)*cos(70))/(-625 + 16*cos(70)**2 + 16*sin(70)**2)), (10*(4*sin(40)*sin(70)*cos(40) + 4*sin(40)**2*cos(70) - sqrt(-16*sin(70)**2*cos(40)**2 - 16*sin(40)**2*cos(70)**2 - 32*sin(40)*sin(70)*cos(40)*cos(70) + 625*cos(40)**2 + 625*sin(40)**2)*cos(40))/(cos(40)**2 + sin(40)**2), 10*(4*sin(40)*cos(40)*cos(70) + 4*sin(70)*cos(40)**2 + sqrt(-16*sin(70)**2*cos(40)**2 - 16*sin(40)**2*cos(70)**2 - 32*sin(40)*sin(70)*cos(40)*cos(70) + 625*cos(40)**2 + 625*sin(40)**2)*sin(40))/(cos(40)**2 + sin(40)**2), 120*(-sin(40)*sin(70) + cos(40)*cos(70))/(-625 + 16*cos(70)**2 + 16*sin(70)**2) - 30*sqrt(-16*sin(70)**2*cos(40)**2 - 16*sin(40)**2*cos(70)**2 - 32*sin(40)*sin(70)*cos(40)*cos(70) + 625*cos(40)**2 + 625*sin(40)**2)/(-625 + 16*cos(70)**2 + 16*sin(70)**2)))

如何让它以十进制形式返回答案


Tags: 答案代码格式sqrtsincos解决方案形式
1条回答
网友
1楼 · 发布于 2024-09-29 02:15:35

你可以使用evalf。这有点复杂,因为set和tuple对象没有evalf方法,所以:

>>> [tuple(s.evalf() for s in si) for si in sol]                                                                                          
[(-168.048969910891, -185.093337837666, -1.03464484562728), (165.411705775208, 187.453907914815, 1.42834762919956)]

相关问题 更多 >