为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的 SSS 三角形解算器给出完全错误的答案?

为什么我的 SSS 三角形解算器给出完全错误的答案?

犯罪嫌疑人X 2023-10-12 14:48:06
因此,我接到了一个项目,其中我必须编写一个 Java 程序,以返回三角形三边之间的角度,并将这三个边作为方法的参数。我们可以使用一个数学公式来导出一个方程,称为余弦定理,给定三角形 a、b 和 c 的边,c^2 = a^2 + b^2 - 2ab * cos(C) 其中 C 是边 a 和 b 之间的某个角度。我们可以分离角度 C 并得到方程arccos((-c^2 + a^2 + b^2) / 2ab) = C。数学很简单,并且很容易在 Java 中实现,但是当我输入边 3、4、5(应产生 90、30、60)的输出时,我得到角度 53.130102、36.86989、90.0。这些绝对不是毕达哥拉斯三元组的角度,如 3、4、5。有谁知道我哪里出错了?代码:import static java.lang.Math.sqrt; import static java.lang.Math.acos; import static java.lang.Math.pow;import static java.lang.Math.PI;class Main {  public static void main(String[] args) {    anglesFinder(3, 4, 5);  }  public static void anglesFinder(int a, int b, int c) {    double alpha;    double beta;    double gamma;    alpha = (double) Math.acos((Math.pow(b, 2) + Math.pow(c, 2) - Math.pow(a, 2)) / (2 * c * b));    beta = (double) Math.acos((Math.pow(a, 2) + Math.pow(c, 2) - Math.pow(b, 2)) / (2 * a * c));    gamma = (double) Math.acos((Math.pow(a, 2) + Math.pow(b, 2) - Math.pow(c, 2)) / (2 * a * b));     System.out.println("angle between a & b is: " + (beta * (180 / Math.PI)));    System.out.println("angle between a & c is: " + (alpha * (180 / Math.PI)));    System.out.println("angle between b & c is: " + (gamma * (180 / Math.PI)));  }}
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

你的程序是正确的,但你的程序是错误的。对于(比例)长度为 1、sqrt(3)/2(约 0.866)和 2 的直角三角形,预计角度为 30、60 和 90 度,但不能缩放到长度 3、4、和 5.

我的计算器对于 53.130102 度的余弦给出大约 0.6,对于 36.86989 度的余弦给出大约 0.8,这与长度 3、4 和 5 匹配。


查看完整回答
反对 回复 2023-10-12
  • 1 回答
  • 0 关注
  • 60 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信