r - 在 R 中获取导数

标签 r math derivative

我正在尝试求表达式的导数:

x = read.csv("export.csv", header=F)$V1
f = expression(-7645/2* log(pi) - 1/2 * 
       sum(log(w+a*x[1:7644]^2)) + (x[2:7645]^2/(w + 
       a*x[1:7644]^2)),'a')
D(f, 'a')

x 只是一个整数向量,aw 是我试图通过推导找到的变量。但是,我收到错误

"Function '`[`' is not in Table of Derivatives"

由于这是我第一次使用 R,所以我现在不知道该怎么办。我假设 R 表达式中的 sum 函数有问题?


遵循建议后,我现在执行了以下操作:

y <- x[1:7644]
z <- x[2:7645]

f = expression(-7645/2* log(pi) - 
       1/2 * sum(log(w+a*y^2)) + (z^2/(w + a*y^2)), 'a')

推导此结果会出现错误“总和不在导数表中”。如何确保表达式考虑 yz 的每个值?


另一个更新:

y <- x[1:7644]
z <- x[2:7645]

f = expression(-7645/2* log(pi) - 1/2 * log(w+a*y^2) + 
       (z^2/(w + a*y^2)))

d = D(f, 'a')

uniroot(eval(d), c(0, 1000))

我删除了“sum”函数,只输入 y 和 z。现在,有 2 个问题:

a) 我如何确定这仍然是预期的行为?
b) Uniroot 似乎不喜欢“w”和“a”,因为它们只是象征性的。我将如何解决这个问题?我收到的错误是“未找到对象 'w'”

最佳答案

这应该有效:

由于您添加了两个术语 f+g ,导数D(f+g) = D(f) + D(g) ,所以让我们像这样分开两者:

g = expression((z^2/(w + a*y^2)))
f = expression(- 1/2 * log(w+a*y^2))

看到sum()从表达式 f 中删除,因为乘法常数被移动到 sum() 中和 D(sum()) = sum(D()) 。第一个常数也被删除,因为导数为 0。

所以:

D(sum(-7645/2* log(pi) - 1/2 * log(w+a*y^2)) + (z^2/(w + a*y^2)) = D( constant + sum(f) + g ) = sum(D(f)) + D(g)

应该给出:

sum(-(1/2 * (y^2/(w + a * y^2)))) + -(z^2 * y^2/(w + a * y^2)^2)

关于r - 在 R 中获取导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40610642/

相关文章:

r - 带有 geom_bin2d 覆盖图和附加统计信息的 map

r - 有效地执行行式分布测试

python - 拟合给定数据的近似多项式

math - 多边形的点公式

python - python中数组的导数?

r - R 中意外的应用函数行为

r - 根据列值拆分数据并创建散点图。

c# - 在两个值之间振荡或 "ping pong"?

c - 具有 sqrt 、abs 和 c 上的导数的方程