如何在 R 中将(一阶)导数编写为函数?

How to write a (first-order) derivative as a function in R?

我需要 p-t*(p^g)*(1-p)^d) 的导数作为 p 的函数。 t、d 和 g 均已定义。 我在尝试:

firstder<-D(expression(p-t*(p^g)*(1-p)^d), "p")
firstderivative<-function(p){
firstder
}

但是,调用

firstderivative(p=0.1)

给我的只是一阶导数的表达式。提前致谢!

firstder 是 class "call" 的对象。

class(firstder)
#[1] "call"

您忘记评估调用了。

firstder <- D(expression(p-t*(p^g)*(1-p)^d), "p")

firstderivative <- function(p){
    eval(firstder)
}

g <- 1
d <- 1
t <- 1
firstderivative(p=0.1)
#[1] 0.2

使用 mosaicCore 包非常容易。鉴于您有 F(x)=x^2 并且您希望根据 x 计算导数,因此您有:

library(mosaicCore)


dx2x <- deriv(~ x^2, "x") 
x <- -1:2
eval(dx2x)

在你的情况下,它将是:

library(mosaicCore)

dx <- deriv(~expression(p-t*(p^g)*(1-p)^d), "p")

x <- -1:2
eval(dx)