簡體   English   中英

當根 function 有多個 arguments 時,為什么 uniroot.all 拋出未使用的變量錯誤?

[英]Why is uniroot.all throwing unused variable error when root function has multiple arguments?

千載難逢的時候,我需要使用來自rootSolve uniroot.all來找到具有多個 arguments 的 function 的根。每次我這樣做都會遇到一堆障礙,我最終解決了,但是下次我會忘記我是如何解決它們的。 所以,這次我在這里記錄障礙,希望下次我可以只看這里,看看如何快速解決它們。

這是一些示例代碼:

testFn <- function(x, a, b, thresh){
  f <- a * x^2 - b
  slack <- f - thresh
  return(slack)
}

a <- 1
b <- 2
thresh <- 0
xGuess <- 1
testFn(xGuess, a, b, thresh)
interval <- c(0, 2)
testRoot <- rootSolve::uniroot.all(testFn,
                                   interval = interval,
                                   lower = min(interval),
                                   upper = max(interval),
                                   x = xGuess,
                                   a = a,
                                   b = b,
                                   thresh = thresh)

這應該給出 x 的根等於 2 的平方根,但會拋出以下錯誤:

Error in f(xseq, ...): unused argument (xseq)

我認為問題與我如何將額外參數(如a, b, thresh )傳遞給testFn()

您的問題包括x = xGuess

library(rootSolve)
uniroot.all(testFn,
            interval = interval,
            lower = min(interval),
            upper = max(interval),
            #x = xGuess,
            a = a,
            b = b,
            thresh = thresh)
## [1] 1.41418

如果您鍵入uniroot.all (不帶() ),您可以看到代碼。 它調用f(xreg, ...) ,如果第一個參數是x並且僅指定了額外的 arguments ( abthresh在您的情況下),它就可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM