Символното диференциране е по-малко податливо на грешки, отколкото правенето му на ръка.
За ниски поръчки не бих си помислил, че символното диференциране ще отнеме много компютърно време, но можете лесно да определите времето на вашата конкретна ситуация, за да определите какво използва proc.time, system.time или rbenchmark пакет. Вижте също тези примери.
Може да искате да опитате както символично, така и разграничаване на ръцете като чек.
По отношение на R deriv (и свързани функции като D
) спрямо пакета Ryacas, последният има възможността да прави многократно диференциране, без да изисква потребителят да повтаря сами (трети аргумент от deriv
определя реда) и има функция Simplify
, за която не съществува двойник в R, въпреки че Ryacas трябва да се проверява внимателно, тъй като yacas може да бъде малко бъгово на моменти.
Ето един пример:
> library(Ryacas)
> x <- Sym("x")
> y <- (x^2+x)^2
> dy <- deriv(y, x, 2) # 2nd deriv
> dy
expression(2 * (2 * x + 1)^2 + 4 * (x^2 + x))
> Simplify(dy)
expression(2 * (6 * x^2 + 6 * x + 1))
РЕДАКТИРАНЕ: Добавено към примера:
> Eval(dy, list(x = 3))
[1] 146
> Eval(Simplify(dy), list(x = 3))
[1] 146
>
> f <- function(x) {}
> body(f) <- yacas(Simplify(dy))[[1]]
> f
function (x)
2 * (6 * x^2 + 6 * x + 1)
> f(3)
[1] 146
>
> # double check
> w <- 3
> eval(D( D(expression((w^2+w)^2), "w"), "w"))
[1] 146
Опитайте също demo("Ryacas-Function")
.
РЕДАКТИРАНЕ 2: Коригирана грешка и добавени още към примера.
person
Community
schedule
08.01.2012
f
? - person Carl Witthoft   schedule 08.01.2012D()
изброява редица функции с единична променлива, които той разпознава. Ryacas разпознава ли куп повече? - person Josh O'Brien   schedule 08.01.2012