f 的导数,使得 f<-function(x){x^2}(或类似的)没有 yacas
Derivative of f, such that f<-function(x){x^2} (or similar) without yacas
我需要找到定义为
的函数的导数
f<-function(x){x^2}
之后我想要一个导数函数g
,这样我就可以得到类似的东西:
g(5) # entered
10 # answer
没有 Yacas 或类似的重型软件。 R能求出x^2
的导数,却没有办法求导f<-function(x){x^2}
,我觉得很奇怪。
我试过这样做:
f<-function(x){x^2}
g<-Deriv(f,"x")
我得到一个错误:
Error in list2env(list(), NULL, <environment>) :
names(x) must be a character vector of the same length as x
我也试过这个:
> f1<-'x^2'
> g<-Deriv(f1,"x")
> g
#Result:
"2*x"
我可以将我的函数 f 转换为类似 f1 的函数并反转该过程吗?
还有别的办法吗?
假设一个单行体和一个单一变量的函数x
:
f <- function(x) x^2
g <- f
body(g) <- D(body(f), "x")
给予:
> g
function (x)
2 * x
您可以将函数定义为表达式:
f <- expression(x^2)
可以使用 eval()
:
将此类表达式视为函数
#> eval(f,list(x=2))
#[1] 4
在这种情况下,表达式而不是函数的优点是前者允许使用符号演算来获得一阶导数:
g <- D(f,"x")
#> g
#2 * x
要计算一阶导数的这个表达式(更准确地说,它的 class 是一个 call
),您可以使用与之前对 f
所做的相同的语法:
#> eval(g,list(x=5))
#[1] 10
我需要找到定义为
的函数的导数f<-function(x){x^2}
之后我想要一个导数函数g
,这样我就可以得到类似的东西:
g(5) # entered
10 # answer
没有 Yacas 或类似的重型软件。 R能求出x^2
的导数,却没有办法求导f<-function(x){x^2}
,我觉得很奇怪。
我试过这样做:
f<-function(x){x^2}
g<-Deriv(f,"x")
我得到一个错误:
Error in list2env(list(), NULL, <environment>) :
names(x) must be a character vector of the same length as x
我也试过这个:
> f1<-'x^2'
> g<-Deriv(f1,"x")
> g
#Result:
"2*x"
我可以将我的函数 f 转换为类似 f1 的函数并反转该过程吗? 还有别的办法吗?
假设一个单行体和一个单一变量的函数x
:
f <- function(x) x^2
g <- f
body(g) <- D(body(f), "x")
给予:
> g
function (x)
2 * x
您可以将函数定义为表达式:
f <- expression(x^2)
可以使用 eval()
:
#> eval(f,list(x=2))
#[1] 4
在这种情况下,表达式而不是函数的优点是前者允许使用符号演算来获得一阶导数:
g <- D(f,"x")
#> g
#2 * x
要计算一阶导数的这个表达式(更准确地说,它的 class 是一个 call
),您可以使用与之前对 f
所做的相同的语法:
#> eval(g,list(x=5))
#[1] 10