我涉足三角学和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
发布于 2015-11-09 23:07:11
你有几个小问题。首先,如果您在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。
https://stackoverflow.com/questions/33618759
复制相似问题