使用numpy,我该怎么做:
ln(x)
Run Code Online (Sandbox Code Playgroud)
它等同于:
np.log(x)
Run Code Online (Sandbox Code Playgroud)
我这样一个看似微不足道的问题道歉,但我之间的差异的理解log和ln被认为ln是LOGSPACEè?
我正在做一些统计计算.我需要它们快速,所以我重写了大部分内容以使用SSE.我对它很陌生,所以我想知道这里的正确方法是什么:
据我所知,SSE中没有log2或ln功能,至少不能达到4.1,这是我使用的硬件支持的最新版本.
是否更好:
美好的一天,
我正在努力与R和自然对数(ln).首先,我在R中找不到ln(x)函数.我注意到log(x)与ln(x)相同(当使用带计算器的ln(x)时).
在R:
log(5) = 1.609438
Run Code Online (Sandbox Code Playgroud)
并用计算器:
ln(5) = 1.609438
log(5) = 0.69897
Run Code Online (Sandbox Code Playgroud)
我试图在R中拟合一个等式(这正是我在3篇参考文献中找到的):
y = a + b(x/305)+ c(x/305)2 + d ln(305/x)+ f ln 2(305/x)
在R中使用以下语法来使用等式是否正确?
y ~ a + b*(x/305) + c*((x/305)^2) + d*log(305/x) + f*(log(305/x))^2
Run Code Online (Sandbox Code Playgroud)
想法是在R中使用此函数和nls().提前感谢!
我有以下方程式,我想解决a:
x = (a-b-c+d)/log((a-b)/(c-d))
Run Code Online (Sandbox Code Playgroud)
其中x,b,c,和d是已知的.我用Wolfram Alpha来解决这个等式,结果是:
a = b-x*W(-((c-d)*exp(d/x-c/x))/x)
Run Code Online (Sandbox Code Playgroud)
其中W是产品日志功能(Lambert W功能).在Wolfram Alpha页面上看到它可能更容易.
我用Matlab的内置lambertW函数来解决这个问题.这很慢,是我脚本的瓶颈.还有另一种更快的方法吗?它不必精确到小数点后十位.
编辑:我不知道这个等式很难解决.这是一张说明我的问题的图片.温度bd加LMTD在每个时间步长中变化,但是已知.热量从红线(CO2)转移到蓝线(水).我需要找到温度"a".我不知道这太难计算了!:P

scipy的logsumexp() 实现是否包括通过从每个元素中减去数组中的最大找到值来防止下溢的hack?
下面解释的那个,其中m = maxval:

我正在将 Matlab 代码(由其他人编写)翻译为 Python。
在 Matlab 代码的一部分中,变量X_new被设置为从对数正态分布中得出的值,如下所示:
% log normal distribution
X_new = exp(normrnd(log(X_old), sigma));
Run Code Online (Sandbox Code Playgroud)
也就是说,从以 为中心的正态分布中抽取一个随机值log(X_old),并将X_new其设置为e提高到该值。
这段代码直接翻译成Python如下:
import numpy as np
X_new = np.exp(np.random.normal(np.log(X_old), sigma))
Run Code Online (Sandbox Code Playgroud)
但numpy包括可以直接采样的对数正态分布。
我的问题是,下面的代码行与上面的代码行等效吗?
X_new = np.random.lognormal(np.log(X_old), sigma)
Run Code Online (Sandbox Code Playgroud) 在这项任务中,我已经完成了除此之外的所有问题.我必须创建一个python脚本来解决方程式(截图).
不幸的是,在我对整个互联网的研究中,我无法弄清楚世界上如何将ln转换为日志或任何可用的东西,或任何东西.我到目前为止编写的代码如下.我还会发布我们的老师说应该得到的答案.
import math
p = 100
r = 0.06 / 12
FV = 4000
n = str(ln * ((1 + (FV * r) / p) / (ln * (1 + r))))
print ("Number of periods = " + str(n))
Run Code Online (Sandbox Code Playgroud)
我应该得到的答案是36.55539635919235任何建议或帮助将不胜感激!
另外,我们没有使用numpy.我已经尝试过那个.
谢谢!
我试图通过泰勒系列计算ln(x).这是我的代码:
#define N 10
float ln(float x){
int i;
float result;
float xt;
float xtpow;
int sign;
if(x > 0 && x <= 1){
xt = x - 1.0;
sign = -1;
xtpow = 1.0;
result = 0;
for(i = 1 ; i < N + 1; i++ );
{
// Problem here
printf("%d\n", i);
sign = sign * (-1);
xtpow *= xt;
result += xtpow * sign / i;
}
}else if(x >= 1)
{
return -1 * ln(1.0 …Run Code Online (Sandbox Code Playgroud) 我想知道Java中是否有找到对数的函数,还是我必须自己实现?如果是这样,我该如何实施?
我尝试遵循“自然对数 (ln) 和指数的有效实现”主题,以便能够在没有 math.h 的情况下实现对数函数。所描述的算法对于 1 到 2 之间的值(标准化值)效果很好。但是,如果这些值未标准化并且我遵循标准化说明,那么我会得到错误的值。
链接:点击这里
如果我按照示例整数值 12510 执行代码,我会得到以下结果:
y = 12510 (0x30DE),log2 = 13,除数 = 26,x = 481,1538
float ln(float y) {
int log2;
float divisor, x, result;
log2 = msb((int)y); // See: /sf/answers/347960161/
divisor = (float)(1 << log2);
x = y / divisor; // normalized value between [1.0, 2.0]
result = -1.7417939 + (2.8212026 + (-1.4699568 + (0.44717955 - 0.056570851 * x) * x) * x) * x;
result += ((float)log2) * 0.69314718; …Run Code Online (Sandbox Code Playgroud) 我想在c语言中使用自然logaritm.
我搜索了谷歌,并在stackoverflow.com上发现了一个问题
但是当我实现这个时,我会得到一个非常神秘的输出
这是代码
double x = log(100 / 150);
printf("d1: %lf", x);
Run Code Online (Sandbox Code Playgroud)
和输出:
d1: -1.#INF00
Run Code Online (Sandbox Code Playgroud)
这是什么?它是某种垃圾吗?怎么了?
我对R的不同感到困惑:
log(0.0001)/0.0001
-92103.4
Run Code Online (Sandbox Code Playgroud)
并且,例如,谷歌计算器渲染:
ln(0.0001)/0.0001
-92103.4037198
Run Code Online (Sandbox Code Playgroud)
为什么四舍五入如此不同?