R直方图中断错误
我必须为我的论文准备一个算法来交叉检查一个理论结果,即N个周期的二项式模型收敛到N到N个周期的对数正态分布。对于那些不熟悉这个概念的人,我必须创建一个算法,它接受一个起始值,并将其与一个向上乘数和一个向下乘数相乘,然后对N步中的每个值继续这样做。该算法应返回一个向量,其元素的形式为StarterValueu^id^{N-i}i=0、\dots,N 我提出的简单算法是R直方图中断错误,r,algorithm,histogram,R,Algorithm,Histogram,我必须为我的论文准备一个算法来交叉检查一个理论结果,即N个周期的二项式模型收敛到N到N个周期的对数正态分布。对于那些不熟悉这个概念的人,我必须创建一个算法,它接受一个起始值,并将其与一个向上乘数和一个向下乘数相乘,然后对N步中的每个值继续这样做。该算法应返回一个向量,其元素的形式为StarterValueu^id^{N-i}i=0、\dots,N 我提出的简单算法是 rata<-function(N,r,u,d,S){ length(x)<-N for(i in 0:N){
rata<-function(N,r,u,d,S){
length(x)<-N
for(i in 0:N){
x[i]<-S*u^{i}*d^{N-i}
}
return(x)
}
首先,我修复您的函数:
rata<-function(N,r,u,d,S){
x <- numeric(N+1)
for(i in 0:N){
x[i]<-S*u^{i}*d^{N-i}
}
return(x)
}
发生了什么事?显然,乘法变成了NaN
:
1.1^7448*0.9^(1e5-7448)
#[1] NaN
1.1^7448
#[1] Inf
0.9^(1e5-7448)
#[1] 0
Inf * 0
#[1] NaN
为什么会出现Inf
值?嗯,由于双重溢出(请阅读帮助(“双重”)
):
当乘法器接近0时,浮点精度也会出现类似问题(请阅读帮助(“.Machine”)
)
您可能需要使用任意精度的数字。首先,我修复您的函数:
rata<-function(N,r,u,d,S){
x <- numeric(N+1)
for(i in 0:N){
x[i]<-S*u^{i}*d^{N-i}
}
return(x)
}
发生了什么事?显然,乘法变成了NaN
:
1.1^7448*0.9^(1e5-7448)
#[1] NaN
1.1^7448
#[1] Inf
0.9^(1e5-7448)
#[1] 0
Inf * 0
#[1] NaN
为什么会出现Inf
值?嗯,由于双重溢出(请阅读帮助(“双重”)
):
当乘法器接近0时,浮点精度也会出现类似问题(请阅读帮助(“.Machine”)
)
您可能需要使用任意精度的数字。首先,我修复您的函数:
rata<-function(N,r,u,d,S){
x <- numeric(N+1)
for(i in 0:N){
x[i]<-S*u^{i}*d^{N-i}
}
return(x)
}
发生了什么事?显然,乘法变成了NaN
:
1.1^7448*0.9^(1e5-7448)
#[1] NaN
1.1^7448
#[1] Inf
0.9^(1e5-7448)
#[1] 0
Inf * 0
#[1] NaN
为什么会出现Inf
值?嗯,由于双重溢出(请阅读帮助(“双重”)
):
当乘法器接近0时,浮点精度也会出现类似问题(请阅读帮助(“.Machine”)
)
您可能需要使用任意精度的数字。首先,我修复您的函数:
rata<-function(N,r,u,d,S){
x <- numeric(N+1)
for(i in 0:N){
x[i]<-S*u^{i}*d^{N-i}
}
return(x)
}
发生了什么事?显然,乘法变成了NaN
:
1.1^7448*0.9^(1e5-7448)
#[1] NaN
1.1^7448
#[1] Inf
0.9^(1e5-7448)
#[1] 0
Inf * 0
#[1] NaN
为什么会出现Inf
值?嗯,由于双重溢出(请阅读帮助(“双重”)
):
当乘法器接近0时,浮点精度也会出现类似问题(请阅读帮助(“.Machine”)
)
您可能需要使用任意精度的数字。请提供一个可复制的示例,即调用此函数并生成直方图(导致此错误)的代码。此外,模拟不能“证明收敛性”。是的,你是正确的,该算法是作为收敛性的另一个展示而存在的,实际的证明发生在这之前。至于示例,我更新了问题,但是我不知道为什么我不能将其设置为代码格式您的示例错误,因为结果向量
taf1
仅包含-Inf、Inf和NaN。所以没有实际的数字来做柱状图。我现在看到了,但为什么会发生这种情况?我能理解inf,-inf,但我不能理解NAN,不能理解对数运算,不能理解算法。taf只包含0和Inf。在干净的环境中,函数会出错,因为没有定义x。更好的方法是只使用矢量化方法(我请提供一个可复制的示例,即调用此函数并生成直方图的代码(导致此错误)。此外,模拟无法“证明收敛”是的,你是对的,这个算法是作为收敛的另一个展示,实际的证明发生在那之前。至于这个例子,我更新了这个问题,但是我不知道为什么我不能把它变成代码格式你的例子错误,因为结果向量taf1
只包含-Inf,Inf和NaN。所以没有实际的数字我现在明白了,但为什么会这样?我能理解inf,-inf,但我不能理解NAN。不是对数,算法。taf只包含0和inf。在干净的环境中,函数会出错,因为没有定义x。更好的方法是使用向量化方法(请提供一个可复制的示例,即调用此函数并生成直方图(导致此错误)的代码。此外,模拟无法“证明收敛”是的,你是对的,这个算法是作为收敛的另一个展示,实际的证明发生在那之前。至于这个例子,我更新了这个问题,但是我不知道为什么我不能把它变成代码格式你的例子错误,因为结果向量taf1
只包含-Inf,Inf和NaN。所以没有实际的数字我现在明白了,但为什么会这样?我能理解inf,-inf,但我不能理解NAN。不是对数,算法。taf只包含0和inf。在干净的环境中,函数会出错,因为没有定义x。更好的方法是使用向量化方法(请提供一个可复制的示例,即调用此函数并生成直方图(导致此错误)的代码。此外,模拟无法“证明收敛”是的,你是对的,这个算法是作为收敛的另一个展示,实际的证明发生在那之前。至于这个例子,我更新了这个问题,但是我不知道为什么我不能把它变成代码格式你的例子错误,因为结果向量taf1
只包含-Inf,Inf和NaN。所以没有实际的数字我现在明白了,但为什么会这样?我能理解inf,-inf,但我不能理解NAN。不是对数,算法。taf只包含0和inf。在干净的环境中,函数会出错,因为x没有定义。更好的方法是使用向量化方法(i