【问题标题】:Which is the fastest way to calculate tan on a computer? [closed]在计算机上计算 tan 的最快方法是什么? [关闭]
【发布时间】:2020-12-07 12:23:38
【问题描述】:

我有一个任务告诉我计算 tan。

【问题讨论】:

  • 10^2020 是弧度还是度数?
  • 只要找到正确的mod...检查here...如果是度数特别好,但在简单版本中也适用于rad
  • 哪个班的作业?到目前为止,您学到了什么,您有哪些可能适用的技术?这是关于数值算法的课程吗?还是关于数学?还是关于汇编编程?更多的上下文将有助于回答这个问题(尤其是“最快”的部分)。
  • @mikuszefski:二进制幂的标准平方乘法算法仅对整数有效;它不会立即用于计算 10**2020 模 pi。 (基本恒等式如 x**2 % y == (x % y)**2 % y 对整数 xy 有效,但在 y 不是整数时会中断。)这里的正确方法从 π 的近似值开始,它对 >2020 位有效,但它不是明确计算这种近似值是否在 OP 类的范围内。 (但如果10^2020 以度为单位,那么问题当然要简单得多。)
  • @marc_xy 请确认10^2020是弧度还是度数。这对答案的复杂性有很大影响。

标签: math trigonometry calculation


【解决方案1】:

目标是找到使特定计算结果可用的最快方法,请注意,该描述并未要求在可能的输入角度(或它的功率)的特定范围内进行计算,尽管似乎问题明年可能会有所不同...)。
即使不知道角度是以弧度还是度数(一个非常重要的细节)给出的,答案是最快的方法是使用常数。它的运行时需求为零,而且代码量可能更小。

【讨论】:

  • 这是上述问题的正确答案。
【解决方案2】:

tan 的参数是一个角度,以弧度或度为单位,任何大于2*Pi 弧度或 360 度的角度都等价于小于该角度的角度;角度“环绕”。因此,这里真正的技巧是找出 0 到 2*Pi 弧度或 0 到 360 度范围内的数字 10^2020 对应的数字。让我们使用度数来说明;同样的过程也可以用于弧度,但数字会变得非常、非常、非常糟糕。

首先,请注意以下几点:

10 ^ 10 = 10,000,000,000 ~ 280 (mod 360)

这就是说 10 的 10 次方给出了一个等效角度为 280 度的数。这意味着我们可以用数字 280 替换 10 的 10 次方。现在请注意

10 ^ 2020 = (10 ^ 10) ^ 202 = 280 ^ 202

我们将指数减少了 10 倍;不错。我们可以通过观察来重复这个过程

280 ^ 2 = 78,400 ~ 280 (mod 360)

这意味着我们的角度等于280 ^ 101,因为280 ^ 202 = (280 ^ 2) ^ 101。确实,还不止这些……

280 ^ 101 
= 280 * 280 ^ 100 
= 280 * (280 ^ 2) ^ 50 
~ 280 * 280 ^ 50
= 280 * (280 ^ 2) ^ 25
~ 280 * 280 ^ 25
= 280 * 280 * 280 ^ 24
= 280 * 280 * (280 ^ 2) ^ 12
~ 280 * 280 * 280 ^ 12
= 280 * 280 * (280 ^ 2) ^ 6
~ 280 * 280 * 280 ^ 6
= 280 * 280 * (280 ^ 2) ^ 3
~ 280 * 280 * 280 ^ 3
= 280 * 280 * 280 * 280 ^ 2
~ 280 * 280 * 280 * 280
= (280 ^ 2) * (280 ^ 2)
~ 280 * 280
= 280 ^ 2
~ 280

所以,10 ^ 2020 ~ 280 如果tan 的参数被理解为度数。 280度的正切应该很容易计算。

【讨论】:

  • (虽然这为您提供了一种计算价值的方法,但请查看 Yunnosch 的答案,该答案是正确的,并且很可能是问这个问题的人的意思……也就是说,这可能是一个技巧问题。)
  • 将您的评论移至答案。
猜你喜欢
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
  • 2011-02-25
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 2011-11-15
相关资源
最近更新 更多