R语言计算带有绝对值符号的函数偏导并输出导数结果
求偏导后的导数表达式网上已有众多教程,这里主要对导数结果的输出及含有绝对值符号的的函数偏导运算进行方法阐述
对函数f=x*|y|*(z-x)求对x、y、z的偏导,输出在点(1,2,3)和(1,-2,3)的导数值,代码如下:
#当y>0时,函数f如下:
fpo<-expression(x*y*(z-x))
#当y<0时,函数f如下:
fne<-expression(x*(-y)*(z-x))
#构造求偏导函数
fun = function(x,y,z){
if(y>=0){
a = eval(deriv(fpo,c("x","y","z")))
re =attr(a,'gradient')
return(re)
}
if(y<0){
b = eval(deriv(fne,c("x","y","z")))
re =attr(b,'gradient')
return(re)
}
}
#代入(1,2,3)检验结果
fun(1,2,3)
#代入(1,-2,3)检验结果
fun(1,-2,3)
结果如下:
fun(1,2,3)
x y z
[1,] 2 2 2
fun(1,-2,3)
x y z
[1,] 2 -2 2