【问题标题】:Exponentiation of real numbers实数的幂运算
【发布时间】:2013-09-12 16:26:20
【问题描述】:

我遇到了一个有趣的练习,它说:使用 Turbo Pascal 的标准函数实现一个函数 x^y

对于integer 变量,我可以使用for 循环,但我无法理解在这种情况下如何使用real 变量。

我一直在考虑如何使用 泰勒级数 来做到这一点(不明白如何使用它进行求幂),我还发现 x^y = exp(y*log(x)) 但只有 @987654325标准函数中的@(自然对数)...

附言 我不是要你写代码:请给我建议或链接或有助于解决这个问题的东西。

【问题讨论】:

  • 如果只有对数基数是问题,那么您可以应用对数公式并更改基数。

标签: algorithm user-defined-functions pascal exponential exponentiation


【解决方案1】:

你的公式中的log(x)是自然对数,所以你可以使用

x^y = exp(y*ln(x))

毫无疑问。 expln 都是标准的 Turbo Pascal 函数

(一般公式为x^y = b^(y * x的以b为底的对数)

【讨论】:

  • 谢谢,我会核实的。但是你能解释一下你是怎么发现log(x) int问题是ln(x)吗?
  • log(x) 是没有底数的抽象对数。 exp 使用意味着自然对数。
【解决方案2】:

log x base y = ln(x) / ln(y) = (log x base 10)/(log y base 10)

以下链接包含有关对数的更多信息。查看“更改基础”部分。 http://en.wikipedia.org/wiki/List_of_logarithmic_identities

您可以将底数更改为自然对数并进行相应计算。

For x = 3.2, y = 2.5,
Say 3.2^2.5 = m
ln(m) = 2.5*ln(3.2)
Hence m = exp( 2.5 * ln(3.2) )

其实对于以上这些,你甚至不需要换基

【讨论】:

  • x:= 3.2y:= 2.5如何申请?
猜你喜欢
  • 2017-07-28
  • 1970-01-01
  • 2018-07-22
  • 2017-04-03
  • 2020-05-14
  • 2014-08-21
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
相关资源
最近更新 更多