Равенство символьных производных в R

Я хотел бы использовать R для проверки сложных вычислений производных. Вот моя лучшая попытка на простой функции:

f <- expression(a*log(x^2))
df.dx <- deriv(f, 'x')
(df.dx)
df.dx.byHand <- expression(2*a/x) # The derivative of f calculated by hand
(df.dx.byHand)
all.equal(df.dx, df.dx.byHand) 

Результат вышеизложенного

> (df.dx)
 expression({
.expr1 <- x^2
.value <- a * log(.expr1)
.grad <- array(0, c(length(.value), 1L), list(NULL, c("x")))
.grad[, "x"] <- a * (2 * x/.expr1)
attr(.value, "gradient") <- .grad
.value

> (df.dx.byHand)
expression(2 * a/x)

[1] "Component 1: target, current do not match when deparsed"

я уже проверил

Явная формула и символьные производные в R,

http://stat.ethz.ch/R-manual/R-patched/library/stats/html/deriv.html

Символические производные и упрощение в R

а также

http://stat.ethz.ch/R-manual/R-patched/library/base/html/expression.html

поскольку основная проблема заключается в том, что я не знаю, как извлечь из 'df.dx' часть выражения 'grad [, 'x']'.

Из-за проблем с ИТ ни Sage, ни YACAS мне недоступны.

Большое спасибо за предложения!


person Pavel L    schedule 13.05.2014    source источник


Ответы (1)


Проблема в вопросе заключается не только в извлечении выражения, но и в том, что выражение необходимо упростить.

1) Если "ИТ-проблемы" означают, что у вас возникли проблемы с установкой Ryacas, перейдите на главную страницу Ryacas советы по устранению неполадок и попробуйте следующее:

library(Ryacas)
x <- Sym("x")
a <- Sym("a")
identical(Eval(Simplify(deriv(a*log(x^2), x))), 2 * a / x) # TRUE

Если вы получите FALSE, то они все еще могут быть одинаковыми, если упрощение не приведет их к той же форме, что и созданная вручную, поэтому вы можете попробовать следующий метод в любом случае.

2) Если "ИТ-проблемы" означают, что вам не разрешено устанавливать пакеты, просто сравните их в сетке:

df.dx.byHand <- function(x) 2*a/x

df.dx <- function(x) {}
body(df.dx) <- D(f,'x')

a <- 3
all.equal(df.dx.byHand(1:100), df.dx(1:100)) # TRUE

ОБНОВЛЕНО Предоставлено решение Ryacas

person G. Grothendieck    schedule 13.05.2014
comment
Спасибо! «Проблема ИТ» — последняя: у меня нет прав администратора для установки YACAS (но я могу установить только пакеты R — что, насколько я понимаю, не помогает, если у меня также нет YACAS). ) - person Pavel L; 13.05.2014
comment
Какую ОС вы используете? - person G. Grothendieck; 13.05.2014
comment
Windows 7. Раньше у меня были проблемы с установкой Yacas, но теперь я справился (следуя советам на сайте Ryacas). - person Pavel L; 13.05.2014
comment
В этом случае также добавили решение Ryacas. - person G. Grothendieck; 13.05.2014
comment
Я по-прежнему получаю FALSE для производных, которые меня интересуют, поэтому похоже, что 2 — лучшее решение для моей проблемы. Большое тебе спасибо! - person Pavel L; 13.05.2014