【发布时间】:2020-10-13 19:03:20
【问题描述】:
我正在编写一些代码来计算函数的导数。我设法为 1 个变量生成一阶和二阶导数,并将其作为函数存储在环境中,以便稍后绘制它们。现在我正在尝试计算具有 2 个或更多变量的方程的偏导数,但我找不到可以在环境中生成与函数的偏导数一样多的函数的代码。
为了澄清,我使用了 1 个变量:
f <- function(x) cos(20*x)*exp(-1*x)
F.<- function (x) eval(D(as.expression(body(f)), "x"))
F..<- function (x) eval(D(as.expression(D(as.expression(body(f)), "x")),"x"))
而且效果很好,我在环境中获得了 3 个功能:
但是对于超过 1 个变量,我必须遍历这些函数并生成与方程的偏导数一样多的函数。
我的问题是:如何生成一个循环来计算函数的偏导数并将它们存储为函数,每个函数都有一个自定义名称?
我在 for 循环中尝试了导数函数,但无法为导数的每次计算定义不同的名称:
for (i in 1:nro_variables) {
var_D = vector_variables[i]
F.<- function (x) eval(D(as.expression(body(f)), var_D))
}
【问题讨论】:
-
您能否举一个函数示例,该函数具有多个变量,以及您期望从该输入获得的输出?这样就可以测试和验证可能的解决方案。
-
@MrFlick,是的。假设我将函数“f”定义为:f= -log(1-x-y)-log(x)-log(y)。它的偏导数是:F.= 1/(1-x-y)-1/x 对于“x”,F.= 1/(1-x-y)-1/y 对于“y”。我正在尝试将两个方程以不同的名称存储在环境中(例如:“F.x”表示相对于“x”的偏导数,“F.y”表示相对于“y”的偏导数)
标签: r function derivative