问题标签 [natural-logarithm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
61 浏览

awk - awk 中的 int() 函数会更改参数,即使这已经是整数

我不明白以下两个结果awk

版本:

0 投票
1 回答
277 浏览

c - 自然对数 (ln) 和取幂的实现问题

我尝试遵循“自然对数 (ln) 和求幂的有效实现”主题,以便能够在没有 math.h 的情况下实现对数函数。所描述的算法适用于 1 和 2 之间的值(归一化值)。但是,如果这些值没有被规范化并且我按照规范化说明进行操作,那么我会得到错误的值。

链接:点这里

如果我遵循示例整数值 12510 的代码,我会得到以下结果:

y = 12510 (0x30DE),log2 = 13,除数 = 26,x = 481,1538

x 的预期结果应该是 1 < x < 2 的标准化值。但是,我在这个计算中失败了,因为收到的结果是 481,1538。

提前感谢您的帮助

0 投票
1 回答
351 浏览

optimization - 如何加快我的近似自然对数函数?

我已经实现了一个基于截断泰勒级数的Padé 近似的近似自然对数函数。准确度是可以接受的(±0.000025),但是尽管经过了几轮优化,它的执行时间仍然是标准库ln函数的2.5倍左右!如果它不更快并且不那么准确,那将毫无价值!尽管如此,我还是用它来学习如何优化我的 Rust 代码。(我的时间来自使用criterion板条箱。我使用了黑盒,对循环中的值求和,并从结果中创建了一个字符串来击败优化器。)

在 Rust Playground 上,我的代码是:

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=94246553cd7cc0c7a540dcbeff3667b9

算法

我的算法概述,它适用于无符号整数的比率:

  1. 通过除以不超过值的 2 的最大幂,将范围缩小到区间 [1, 2]:
    • 改变分子的表示 →2ⁿ·N where 1 ≤ N ≤ 2
    • 改变分母的表示 →2ᵈ·D where 1 ≤ D ≤ 2
  2. 这使得结果log(numerator/denominator) = log(2ⁿ·N / 2ᵈ·D) = (n-d)·log(2) + log(N) - log(D)
  3. 为了执行 log(N),泰勒级数不会在零附近收敛,但会在 1 附近收敛……
  4. ...因为 N 接近 1,替换 x = N - 1 以便我们现在需要计算 log(1 + x)
  5. 执行替换y = x/(2+x)
  6. 考虑相关函数f(y) = Log((1+y)/(1-y))
    • = Log((1 + x/(2+x)) / (1 - x/(2+x)))
    • = Log( (2+2x) / 2)
    • = Log(1 + x)
  7. f(y) 有一个泰勒展开式,它的收敛速度必须快于 Log(1+x) 的展开式......
    • 对于 Log(1+x) →x - x²/2 + x³/3 - y⁴/4 + ...
    • 对于 Log((1+y)/(1-y)) →y + y³/3 + y⁵/5 + ...
  8. 对截断序列使用 Padé 近似y + y³/3 + y⁵/5 ...
  9. ...这是2y·(15 - 4y²)/(15 - 9y²)
  10. 重复分母并合并结果。

Padé 逼近

这是代码的 Padé Approximation 部分:

显然,没有太多可以加快速度了!

最高有效位

到目前为止,影响最大的变化是优化我的计算,以获得最高位的位置。我需要它来缩小范围。

这是我的msb功能:

Rust u64::next_power_of_two,不安全的代码和内在函数

现在我知道 Rust 有一种快速的方法来找到大于或等于一个数字的 2 的最低幂。我需要这个,但我也需要位位置,因为这相当于我的数字的对数基数 2。(例如:next_power_of_two(255) 产生 256,但我想要 8,因为它设置了第 8 位。)查看源代码next_power_of_two,我在一个名为的私有辅助方法中看到这一行fn one_less_than_next_power_of_two

那么是否有一个内在函数可以用来以相同的方式获得位位置?它是否用于我可以访问的公共方法中?或者有没有办法编写不安全的代码来调用一些我不知道的内在代码(其中大部分)?

如果有这样的方法或内在我可以调用,我怀疑这会大大加快我的程序,但也许还有其他的东西也会有所帮助。

更新:

打头!我可以用它63 - x.leading_zeros()来找到最高位的位置!我只是没想到从另一端过来。我会试试这个,看看它是否会加快速度......

0 投票
1 回答
28 浏览

audio - 如何反转滑块的这个 ln 幂函数?

我可以从 Helmut Sennewald 的 LSpice 电位器代码中翻译出来。但是数学不是我的事,所以我不确定是否可以扭转这一点,以便如果 ln 段算法上的给定点将返回原始直线段上的相应值。现在我超级天真的解决方案是扫描东西以获得答案。这是原始的工作前向代码。

0 投票
1 回答
291 浏览

python - 如何找到对数值的总和

我刚开始学习 Python 3,我有以下问题需要解决:

“编写一个程序,计算从 1 到某个数 n 的所有素数的对数之和,并打印出素数的对数之和。

一个。输入:整数 n

湾。输出:log(1),log(2),log(3),...,log(n) 之和(log 的底数为 10)"

0 投票
1 回答
38 浏览

python - TypeError:当使用 numpy.linalg.slogdet() 时,不能将序列乘以“浮点”类型的非整数

我正在尝试计算,val但出现类型错误。

这是计算中使用的一小部分矩阵,以显示它包含的数据类型,原始矩阵为 30x30。

要找到val我计算:

但是得到这个:

当我尝试使用普通行列式而不是日志时,它工作正常:

为什么 slogdet() 而不是 det() 会发生此错误,我怎样才能使它适用于日志行列式?

0 投票
2 回答
534 浏览

python - 'e' python 自然对数的底

名称'e'未定义我的python代码中出现此错误。我已经导入了 math 和 numpy 模块。我还需要什么?

0 投票
1 回答
47 浏览

r - 如何将绘图的 y 轴从 log(y) 转换为 y

我是R新手。我想估计对 INCOME 的 log(CONSUMPTION) 回归,然后绘制 CONSUMPTION 和 INCOME 的图。

我可以运行以下回归并绘制结果。

如果我这样做,我会在垂直轴上得到 log(CONSUMPTION) 而不是 CONSUMPTION。

如何在垂直轴上获得 CONSUMPTION 的绘图?

另一种提问方式是如何将绘图的 y 轴从 log(y) 转换为 y?虽然我的问题是函数 effect_plot(),但我会对任何绘图函数感到满意。

感谢你给与我的帮助。

0 投票
1 回答
461 浏览

r - RStudio:如何在 ggplot2 中将水平轴转换为自然对数刻度?

我正在使用包 tidyverse 并希望将下图的 X 轴缩放为值的自然对数。

它必须缩放到自然对数。

0 投票
0 回答
156 浏览

transformation - 如何处理对数转换中的负变量和正变量

我正在创建一个基线。该基线由一些变量组成。其中一些变量是正的,而其他变量则呈现正值和负值。这里的问题是:我需要为另一个模型对这些变量进行对数转换。我该如何处理?

我是否需要在每个 pos/neg 向量中添加绝对值 +1 的最小值?在这种情况下,我的基线将被修改。我可以再次与使用的常数成比例(绝对值的最小值+1)吗?

提前感谢大家。