Java实现正弦定理计算时反正弦结果错误如何修复
问题说明
通过正弦定理求解三角形内角A,预期正确结果为39.41度,但运行提供的Java代码无法得到正确的反正弦计算结果。
原始复现代码:
import static java.lang.Math.*; public class test { public static void calculateAzimuth() { double a = 90; double A = 0; double c = 132.3459; double C = 111; // a C c //sine^-1( 90* ( (sine111) /132.3459)) = A C = sin(toRadians(C)); A = C/c; A = (A*a); A = asin(A); System.out.println("Angle " + A); } }
问题根因
Java的Math.asin()API返回值为弧度单位的角度,代码完成反正弦计算后未做弧度到角度的单位转换,直接输出的弧度值和预期的角度数值不匹配。
计算逻辑校验:
- 111度转为弧度求正弦值约为0.9336
- 代入正弦定理公式得到
asin()入参约为0.6349 - 反正弦返回的弧度值约为0.6878,直接输出该值和39.41的预期结果完全不符
修复方案
在asin()计算完成后,调用Math.toDegrees()方法将弧度结果转换为角度单位即可得到正确值。
修复后的核心计算段:
C = sin(toRadians(C)); A = C / c; A = A * a; A = asin(A); // 增加弧度转角度的单位转换步骤 A = toDegrees(A); System.out.println("Angle " + A);
运行修复后的代码,输出结果约为39.41,和预期结果一致。
内容的提问来源于stack exchange,提问作者Depressed Putin
相关产品推荐
相关产品推荐

