我用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)))
如何让它以十进制形式返回答案
你可以使用evalf。这有点复杂,因为set和tuple对象没有evalf方法,所以:
相关问题 更多 >
编程相关推荐