问题标签 [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.
awk - awk 中的 int() 函数会更改参数,即使这已经是整数
我不明白以下两个结果awk
版本:
c - 自然对数 (ln) 和取幂的实现问题
我尝试遵循“自然对数 (ln) 和求幂的有效实现”主题,以便能够在没有 math.h 的情况下实现对数函数。所描述的算法适用于 1 和 2 之间的值(归一化值)。但是,如果这些值没有被规范化并且我按照规范化说明进行操作,那么我会得到错误的值。
链接:点这里
如果我遵循示例整数值 12510 的代码,我会得到以下结果:
y = 12510 (0x30DE),log2 = 13,除数 = 26,x = 481,1538
x 的预期结果应该是 1 < x < 2 的标准化值。但是,我在这个计算中失败了,因为收到的结果是 481,1538。
提前感谢您的帮助
optimization - 如何加快我的近似自然对数函数?
我已经实现了一个基于截断泰勒级数的Padé 近似的近似自然对数函数。准确度是可以接受的(±0.000025),但是尽管经过了几轮优化,它的执行时间仍然是标准库ln
函数的2.5倍左右!如果它不更快并且不那么准确,那将毫无价值!尽管如此,我还是用它来学习如何优化我的 Rust 代码。(我的时间来自使用criterion
板条箱。我使用了黑盒,对循环中的值求和,并从结果中创建了一个字符串来击败优化器。)
在 Rust Playground 上,我的代码是:
算法
我的算法概述,它适用于无符号整数的比率:
- 通过除以不超过值的 2 的最大幂,将范围缩小到区间 [1, 2]:
- 改变分子的表示 →
2ⁿ·N where 1 ≤ N ≤ 2
- 改变分母的表示 →
2ᵈ·D where 1 ≤ D ≤ 2
- 改变分子的表示 →
- 这使得结果
log(numerator/denominator) = log(2ⁿ·N / 2ᵈ·D) = (n-d)·log(2) + log(N) - log(D)
- 为了执行 log(N),泰勒级数不会在零附近收敛,但会在 1 附近收敛……
- ...因为 N 接近 1,替换 x = N - 1 以便我们现在需要计算 log(1 + x)
- 执行替换
y = x/(2+x)
- 考虑相关函数
f(y) = Log((1+y)/(1-y))
= Log((1 + x/(2+x)) / (1 - x/(2+x)))
= Log( (2+2x) / 2)
= Log(1 + x)
- 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 + ...
- 对于 Log(1+x) →
- 对截断序列使用 Padé 近似
y + y³/3 + y⁵/5 ...
- ...这是
2y·(15 - 4y²)/(15 - 9y²)
- 重复分母并合并结果。
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()
来找到最高位的位置!我只是没想到从另一端过来。我会试试这个,看看它是否会加快速度......
audio - 如何反转滑块的这个 ln 幂函数?
我可以从 Helmut Sennewald 的 LSpice 电位器代码中翻译出来。但是数学不是我的事,所以我不确定是否可以扭转这一点,以便如果 ln 段算法上的给定点将返回原始直线段上的相应值。现在我超级天真的解决方案是扫描东西以获得答案。这是原始的工作前向代码。
python - 如何找到对数值的总和
我刚开始学习 Python 3,我有以下问题需要解决:
“编写一个程序,计算从 1 到某个数 n 的所有素数的对数之和,并打印出素数的对数之和。
一个。输入:整数 n
湾。输出:log(1),log(2),log(3),...,log(n) 之和(log 的底数为 10)"
python - TypeError:当使用 numpy.linalg.slogdet() 时,不能将序列乘以“浮点”类型的非整数
我正在尝试计算,val
但出现类型错误。
这是计算中使用的一小部分矩阵,以显示它包含的数据类型,原始矩阵为 30x30。
要找到val
我计算:
但是得到这个:
当我尝试使用普通行列式而不是日志时,它工作正常:
为什么 slogdet() 而不是 det() 会发生此错误,我怎样才能使它适用于日志行列式?
python - 'e' python 自然对数的底
名称'e'未定义我的python代码中出现此错误。我已经导入了 math 和 numpy 模块。我还需要什么?
r - 如何将绘图的 y 轴从 log(y) 转换为 y
我是R新手。我想估计对 INCOME 的 log(CONSUMPTION) 回归,然后绘制 CONSUMPTION 和 INCOME 的图。
我可以运行以下回归并绘制结果。
如果我这样做,我会在垂直轴上得到 log(CONSUMPTION) 而不是 CONSUMPTION。
如何在垂直轴上获得 CONSUMPTION 的绘图?
另一种提问方式是如何将绘图的 y 轴从 log(y) 转换为 y?虽然我的问题是函数 effect_plot(),但我会对任何绘图函数感到满意。
感谢你给与我的帮助。
r - RStudio:如何在 ggplot2 中将水平轴转换为自然对数刻度?
我正在使用包 tidyverse 并希望将下图的 X 轴缩放为值的自然对数。
它必须缩放到自然对数。
transformation - 如何处理对数转换中的负变量和正变量
我正在创建一个基线。该基线由一些变量组成。其中一些变量是正的,而其他变量则呈现正值和负值。这里的问题是:我需要为另一个模型对这些变量进行对数转换。我该如何处理?
我是否需要在每个 pos/neg 向量中添加绝对值 +1 的最小值?在这种情况下,我的基线将被修改。我可以再次与使用的常数成比例(绝对值的最小值+1)吗?
提前感谢大家。