繁体   English   中英

如何在R中的函数中绘制两个变量的函数图

[英]How to plot graph of functions of two variables in a function in R

我制作了这个导数脚本,我想绘制导数结果的图形以及函数。 但是我无法在多元情况下制作图表 f(x,y),导数的结果被视为一个值而不是一个函数。 请参见下面的示例:

DD7<-function(x,r,contador=1){

dy<- substitute(x)
if(contador<1) {

stop("Grau de derivada menor que 1")
}
if(contador==1) {

der<-D(dy,c(r))

print(der)
x<- y <- seq(-3,3,length=50)
z<- outer(x,y,der)
persp(x,y,z)
}
else {
der2<- DD(D(dy,r),r,contador-1)
print(der2)
x2<- y2 <- seq(-3,3,length=50)
z2<- outer(x,y,der2)
persp(x,y,z2)

}
}

DD7(x*y^2,"y",1)

Error in get(as.character(FUN), mode = "function", envir = envir) : 
object 'der' of mode 'function' was not found

正如我在评论中所说, outer的第三个参数必须是一个函数。 如果您使用eval(der) ,您可能会(正确地)根据调用环境(函数的环境,具体而言)中找到的对象来推断它正在评估表达式(在此示例中为y^2 )。 因为xy都找到了,所以eval(der)使用这些变量,并返回一个适当长度的向量。

external 的目的是对值进行outer连接,扩展为length(x)*length(y)组合。 如果您查看由outer调用的函数,它的第一个参数是length(x)*length(y)长元素,全部来自原始x 第二个参数也是那个长度,来自原始y 值的顺序使得来自x的所有值都与y的所有值配对。

鉴于此,我们需要做的是让eval(der)环境中运行。

DD7 <- function(x, r, contador=1) {
  # ...
  z2 <- outer(x, y, function(x, y) eval(der))
  persp(x, y, z2)
  # ...
}

DD7(x*y^2, "y", 1)
# x * (2 * y)

透视图

在该示例中,可能会混淆何时引用哪个xy 这很简单:在传递给 external 的匿名函数outer ,我们还将它们命名为相同的名称,以便evalder将找到相关的扩展值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM