因为方程中有浮点数,没有符号,所以无法得到精确的解析解
nsolve
In [25]: nsolve(eq, lat2, 0)
Out[25]: 0.661959292973035
In [26]: nsolve(eq, lat2, 1)
Out[26]: 0.664490938542655
In [27]: v1 = nsolve(eq, lat2, 0)
In [28]: v2 = nsolve(eq, lat2, 2)
In [29]: eq.subs(lat2, v1).n()
Out[29]: -7.37924650738106e-14
In [30]: eq.subs(lat2, v2).n()
Out[30]: 1.27083170255818e-13
如果使用atan而不是arctan2:
c = 2 * s.atan( s.sqrt(a) / s.sqrt(1-a) )
你可以直接从
solve
:
In [43]: s.solve(3950 * c - d, lat2, check=False, simplify=False)
Out[43]: [0.661959292973035, 0.664490938542655]
我不知道atan2怎么了。。。