【发布时间】:2018-02-12 16:09:55
【问题描述】:
我想在 R 中求解以下形式的双积分:
地点:
b0= function(time){0.05*sin(0.1*time)+0.14}
bi=function(time){0.05*sin(0.1*time)+0.12}
这是一个相当复杂的方程,我不确定我是否以正确的方式解决它。
这是我尝试过的:
我已经把方程分成小部分:
wi<-Vectorize(function(n,t,bi,di){di-bi(n+t)},"n")
InnerIntegral = function(tau,t,bi){
0.1*exp(integrate(wi,lower=0,upper=(tau),t=t,bi=bi,di=0.1)$value)
}
Pext<-function(t,bi,Text){
integrate(Vectorize(InnerIntegral,c('tau')),lower=0,upper=Text-t,t=t, bi=bi)$value
}
PrIntegral<-Vectorize(function(t,b0,bi,Text){
b0(t)*(1-Pext(t,bi=bi,Text=Text))
},"t")
#For T=100
T=100
integrate(Vectorize(PrIntegral,'t'),lower=0,upper=T,b0=b0,bi=bi,Text=100)$value
这给了我 -27.77913,但我不确定它是否可以。 有在 R 中使用集成经验的人可以帮助我吗?也许我以错误的方式解释了方程式......
谢谢!
【问题讨论】:
-
在你的最后一行代码中,你 Vectorize(PrIntegral,'t') 已经被定义为 t 向量化。通过该更改,代码为我返回 -27.77913
-
我统计了三个不同的积分变量:t、tau 和 n
-
我会尝试将这些提供给 Wolfram Alpha,看看它可以以封闭的形式为您提供什么。这值得一试。这里有三个积分。从内在开始,然后走出去。
-
实际上我的代码给出了与@RomanZenka 相同的结果,-27.77913,但我不确定我是否做得很好,或者我必须做一些更复杂的事情!非常感谢您的回答!
标签: r math integral equation-solving integrate