首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数学函数.三角函数

数学函数.三角函数
EN

Stack Overflow用户
提问于 2015-11-09 21:37:09
回答 1查看 270关注 0票数 0

我涉足三角学和Python之间的领域,并生下了这个恶魔:

代码语言:javascript
复制
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提供了一个错误:

代码语言:javascript
复制
self.angleA = degrees(acos(((b**2)+(c**2)-(a**2))/(2*b*c)))
    ValueError: math domain error

我认为这与整个学位/弧度有关。有什么帮助吗?

BUZZYSIN

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-09 23:07:11

你有几个小问题。首先,如果您在Python的领域中,您将被整数算术杀死。为2注入2.0,以防万一。你测试过简单的案例,比如3-4-5直角三角形吗?

其次,你的面积公式是错误的,你提高2到一个功率。去掉多余的星号。

第三,在你的面积计算中,你把弧度(实际上已经是度)转换成度。你得往另一边走。此外,您必须在接受罪恶之前完成此操作;正弦函数接受度并返回标量,不应将其转换为另一个单元。

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

代码语言:javascript
复制
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

输出

代码语言:javascript
复制
36.8698976458 53.1301023542 90.0
6.0

@顺便提一下,约翰·科尔曼找到了你最初的问题。我尝试了输入3,4,20的代码--这是数学域错误。当您尝试获取无效数字的acos时,模块数学会抛出这个问题,其中一个是外部- 1.0,1.0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33618759

复制
相关文章

相似问题

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