Python,如何解决ValueError:数学域错误
我正在尝试获取此代码的结果:Python,如何解决ValueError:数学域错误,python,python-3.x,math,trigonometry,valueerror,Python,Python 3.x,Math,Trigonometry,Valueerror,我正在尝试获取此代码的结果: 从数学导入cos、sin、atan2、sqrt 从numpy进口rad2deg dis_ab=531466.5079260713 mid=(531353.256588375710971.133034496568) 从x到x的中间角半径=1.5501517288292364 从x到x的中间角度角度角度=88.8171516668233 gdt1_x=761708.6575534055 gdt1_y=3679240.5391967976 无人机x=230355.4009
从数学导入cos、sin、atan2、sqrt
从numpy进口rad2deg
dis_ab=531466.5079260713
mid=(531353.256588375710971.133034496568)
从x到x的中间角半径=1.5501517288292364
从x到x的中间角度角度角度=88.8171516668233
gdt1_x=761708.6575534055
gdt1_y=3679240.5391967976
无人机x=230355.40096502978
无人机y=3668269.406162301
角度=178.8171516668233
def find_point_for_second_gdt():
dist_ab=sqrt((gdt1_x-uav_x)**2)+(gdt1_y-uav_y)**2))
mid=(gdt1_x-无人机_x),(gdt1_y-无人机_y)
从x到x的中间角度=atan2(中间[0],中间[1])
中间角与角的夹角=(rad2deg(中间角与角的夹角与角的夹角)
角度=90+与x_的中间角度(单位:度)
x=gdt1_x+(dis_ab*sqrt(2*cos(角度)))
y=gdt1_y+(dis_ab*sqrt(2*sin(角度)))
end_xy=(x,y)
点_in_lat_lon=将_转换为_lat_lon(end_xy)
打印(平面上的点)
输出:
回溯(最近一次呼叫最后一次):
文件“/home/yovel/PycharmProjects/TriangulationCalc/find_2nd_position.py”,第36行,中
为第二个gdt()查找点
文件“/home/yovel/PycharmProjects/TriangulationCalc/find_2nd_position.py”,第26行,find_point_for_second_gdt
x=gdt1_x+(dis_ab*sqrt(2*cos(角度)))
ValueError:数学域错误
为第二个gdt()查找点
我看了这篇文章:
我的想法是使用abs()和round()
它没有解决它。发生这种情况是因为
cos(角度)
等于-0.9680080671170238
,所以2*cos(角度)
是-1.9360161342340476
,这意味着sqrt(2*cos(角度))
是虚构的
内置的math.sqrt
无法处理负参数,因此会抛出ValueError
如果您确实想找到负数的平方根,可以使用cmath
库中的sqrt
方法:
from cmath import sqrt
在本例中,将给出:
>>> end_xy
((761708.6575534055+739486.7340101058j), (4055734.2602401497+0j))
这是因为
cos(angle)
等于-0.9680080671170238
,所以2*cos(angle)
是-1.9360161342340476
,这意味着sqrt(2*cos(angle))
是虚构的
内置的math.sqrt
无法处理负参数,因此会抛出ValueError
如果您确实想找到负数的平方根,可以使用cmath
库中的sqrt
方法:
from cmath import sqrt
在本例中,将给出:
>>> end_xy
((761708.6575534055+739486.7340101058j), (4055734.2602401497+0j))
这在尝试转换为lat-lon时引发另一个错误,将编辑以添加该函数。新错误raised@yovelcohen请将此作为新问题提问。在尝试转换为lat lon时,这会引发另一个错误,将进行编辑以添加该函数。新错误raised@yovelcohen请把这当作一个新问题来问。