数学函数-三角函数



我一直在涉猎三角法和Python之间的底层领域,并生下了这个恶魔:

self.angleA = degrees(acos(((b**2)+(c**2)-(a**2))/(2*b*c)))
self.angleB = degrees(acos(((c**2)+(a**2)-(b**2))/(2*c*a)))
self.angleC = degrees(acos(((a**2)+(b**2)-(c**2))/(2*a*b)))
self.area = 1/2**a*b*degrees(sin(self.angleC))

Python给出错误:

self.angleA = degrees(acos(((b**2)+(c**2)-(a**2))/(2*b*c)))
    ValueError: math domain error

我认为这与这里发生的整个度数/弧度有关。有什么帮助吗?

BUZZYSIN

您有一些琐碎的问题。首先,如果你在Python领域,你会被整数运算杀死。为2注入2.0,以备不时之需。你测试过简单的案例吗,比如3-4-5的直角三角形?

第二,你的面积公式是错误的;你将2提升为幂。去掉多余的星号。

第三,在面积计算中,将弧度(实际上已经是度)重新转换为度。你需要走另一条路。此外,在你接受罪之前,你必须这样做;正弦函数取度数并返回标量,不应将其转换为其他单位。

最后,当你发帖时,请确保你给出了一个完整的例子。给定的代码没有运行。这是我的版本和输出。

from math import *
a, b, c = 3, 4, 5
angleA = degrees(acos(((b**2)+(c**2)-(a**2))/(2.0*b*c)))
angleB = degrees(acos(((c**2)+(a**2)-(b**2))/(2.0*c*a)))
angleC = degrees(acos(((a**2)+(b**2)-(c**2))/(2.0*a*b)))
area = 0.5*a*b*sin(radians(angleC))
print angleA, angleB, angleC
print area

输出

36.8698976458 53.1301023542 90.0
6.0

@顺便说一句,约翰·科尔曼解决了你最初的问题。我在输入3、4、20时尝试了这段代码,结果出现了数学域错误。当您尝试获取一个无效数字的acos时,模块数学会抛出此问题,该数字在[-1.0,1.0]之外。

最新更新