大家好,我在R中的代码有问题,我想运行整数代码,但代码不工作。有人能帮助我吗?
retensi = 1136074
b = 1/1.230219e-07
sx = function(x)
{exp(-x/b)}
integrate(sx, retensi, Inf)
当我运行这个代码,ruslt是错误Error in integrate(sx, retensi, Inf) : the integral is probably divergent
我不明白,我犯的错误在哪里可以有人帮助我吗?请告诉我正确的代码的家伙详细信息
重点是如何在RStudio中求解这个积分
2条答案
按热度按时间hk8txs481#
我认为问题在于,表达式
exp(-x/b)
在x值较大时的值太小,以至于你遇到了浮点运算的极限,例如:实际上,快速手动二进制搜索显示大于6,056,915,224的数字将返回0
这意味着,如果积分的上限设置为6,056,915,224,您将获得积分的最佳近似值:
我们可以通过简单地求出表达式的不定积分来确认这是正确的,即:
-b e^(-x/b) + c
,并且注意当x无限大时这是0,因此手动计算是:如果我们仍然不确定,可以在Wolfram Alpha中确认
klsxnrf12#
**1)**将
retensi
到a
的积分与a
到Inf的积分相加,得到a
。我们可以通过尝试10^i(i = 7,8,...)来找到a
。代码在第一个a
处停止。所以当a = 10^9时,从
a
到Inf
的积分基本上为零,所以我们可以计算从retensi
到a = 10^9的积分**2)**注意,-B * exp(-x/b)的导数在取消b之后为sx
并且我们有以下等式来检验(1)
**3)**另一种方法是使用变量变换,当函数的输入变为某个有限值时,用一个变为无穷大的函数代替x,尝试x = tan(y),我们得到dx = dy/cos(y)^2:
下面的答案与上述两个答案一致。