私はプログラミングに非常に慣れておらず、本質的に試行錯誤によって学習してきましたが、アプローチ方法がわからない問題に到達しました。Rの三角形領域で二重積分を行う必要があります。通常の積分関数ではこれを処理できないように見えるため、cubature package
(*編集済み - 完全なコードについては以下を参照) を使用してみました。
更新/編集: 私はこれにさらに取り組んできましたが、まだ同じ問題に直面しています。asin計算に関して、値が適切な範囲内にあることを確認する必要があることを理解しています。しかし、これでもまだ三角形領域の根本的な問題を回避できていません。以下に完全なコードを投稿すると、おそらくより明確になります。
L <- 25
n <- -4
area <- 30
distances <- L*seq(0.005, 100, 0.05)
cond <- area*pi
d <- 5
fun <- function(x=1,r=0)
{
if (x<cond) {
return(0)
} else {
return((-1)*((n+2)/(2*pi*(L^2)))*(1+((x/L)^2))^(n/2)*(1/pi)*(1/pi)*acos(d/x))*asin(sqrt((pi*area)/d+r))
}
}
fun(5)
fun(300)
library(cubature)
integrationone <- function()
{
integrand <- adaptIntegrate(fun, lowerLimit=c(d,0), upperLimit=c(80,80))
return(integrand$integral)
}
integrationone()
warnings()
警告メッセージを見ると、R は x の積分中に条件付き引数の評価を実行できないように見えるため、積分したい正確な領域のみの値を取得できません。誰かアイデアやアドバイスはありますか?