Равенство на символните производни в 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