首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python,如何解决ValueError:数学域错误

Python,如何解决ValueError:数学域错误
EN

Stack Overflow用户
提问于 2020-01-21 00:34:23
回答 1查看 285关注 0票数 0

我正在尝试获取此代码的结果:

代码语言:javascript
复制
from math import cos, sin, atan2, sqrt
from numpy import rad2deg


dis_ab= 531466.5079260713
mid=(531353.2565883757, 10971.133034496568)
mid_angle_from_x_in_rad=1.5501517288292364
mid_angle_from_x_in_deg=88.8171516668233
gdt1_x=761708.6575534055
gdt1_y=3679240.5391967976
uav_x= 230355.40096502978
uav_y=3668269.406162301
angle=178.8171516668233




def find_point_for_second_gdt():
    dist_ab = sqrt(((gdt1_x - uav_x) ** 2) + ((gdt1_y - uav_y) ** 2))

    mid = (gdt1_x - uav_x), (gdt1_y - uav_y)
    mid_angle_from_x_in_rad = atan2(mid[0], mid[1])
    mid_angle_from_x_in_deg = (rad2deg(mid_angle_from_x_in_rad))

    angle = 90 + mid_angle_from_x_in_deg


    x = gdt1_x + (dis_ab * sqrt(2 * cos(angle)))
    y = gdt1_y + (dis_ab * sqrt(2 * sin(angle)))

    end_xy = (x, y)

    point_in_lat_lon = convert_to_lat_lon(end_xy)

    print(point_in_lat_lon)

output:
      Traceback (most recent call last):
  File "/home/yovel/PycharmProjects/TriangulationCalc/find_2nd_position.py", line 36, in <module>
    find_point_for_second_gdt()
    File "/home/yovel/PycharmProjects/TriangulationCalc/find_2nd_position.py", line 26, in find_point_for_second_gdt
    x = gdt1_x + (dis_ab * sqrt(2 * cos(angle)))
    ValueError: math domain erro

find_point_for_second_gdt()

我看了这篇文章:ValueError: math domain error

我的想法可能是使用abs()和round()。

它没有解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-21 00:38:32

这是因为cos(angle)等于-0.9680080671170238,所以2 * cos(angle)-1.9360161342340476,这意味着sqrt(2 * cos(angle))是虚构的。

内置的math.sqrt不能处理负参数,所以它抛出了一个ValueError。

如果您确实想要找到负数的平方根,可以使用cmath库中的sqrt方法:

代码语言:javascript
复制
from cmath import sqrt

在本例中,它将提供:

代码语言:javascript
复制
>>> end_xy
((761708.6575534055+739486.7340101058j), (4055734.2602401497+0j))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59827494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档