Java Math 类中的新功能,第 1 部分: 实数 - 编程入门网
1.0
但是,随着角度的增加,误差开始变大,这种简单的方法就不是很适用了:
这里使用泰勒级数得到的结果实际上比我想像的要精确。但是,随着角度增加到 360 度 、720 度(4 pi 弧度)以及更大时,泰勒级数就逐渐需要更多条件来进行准确计算。 java.lang.Math 使用的更加完善的算法就避免了这一点。 泰勒级数的效率也无法与现代桌面芯片的内置正弦函数相比。要准确快速地计算正弦函数 和其他函数,需要非常仔细的算法,专门用于避免无意地将小的误差变成大的错误。这些算 法一般内置在硬件中以更快地执行。例如,几乎每个在最近 10 年内组装的 X86 芯片都具有 正弦和余弦函的硬件实现,X86 VM 只需调用即可,不用基于较原始的运算缓慢地计算它们。 HotSpot 利用这些指令显著加速了三角函数的运算。 直角三角形和欧几里德范数 每个高中学生都学过勾股定理:在直角三角形中,斜边边长的平方等于两条直角边边长平 方之和。即 c 2 = a 2 + b 2 学习过大学物理和高等数学的同学会发现,这个等式会在很多地方出现,不只是在直角三 角形中。例如,R 2 的平方、二维向量的长度、三角不等式等都存在勾股定理。(事实上, 这些只是看待同一件事情的不同方式。重点在于勾股定理比看上去要重要得多)。 Java 5 添加了 Math.hypot 函数来精确执行这种计算,这也是库很有用的一个出色的实 例证明。原始的简单方法如下:
Java Math 类中的新功能,第 1 部分: 实数(3)时间:2011-04-30 IBM Elliotte Rusty Harol实际代码更复杂一些,如清单 2 所示。首先应注意的一点是,这是以本机 C 代码编写的 ,以使性能最大化。要注意的第二点是,它尽力使本计算中出现的错误最少。事实上,应根 据 x 和 y 的相对大小选择不同的算法。 清单 2. 实现 Math.hypot |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |