Символические производные: почему мой код R намного быстрее, чем мой код MATLAB? - PullRequest
2 голосов
/ 13 марта 2019

Я закодировал в R и MATLAB символическую производную простой функции, и я вычислил значение производной в x = 4.Я повторяю операцию 1000 раз (потому что это то, что мне понадобится позже).

Код MATLAB

tic
for i=1:1000

syms nu;

t=100;
gam=3;
x=4;

myfunction = (-gam * nu) + 0.5 * t * nu *log(nu/2)-t*log(gamma(nu/2));

out = double(subs(diff(myfunction),nu,x));
end
toc

Код R

ptm <- proc.time()

for (i in 1:1000) {

t<-100
gam<-3
x<-4

myfunction <- deriv(~(-gam * nu) + 0.5 * t * nu * log(nu/2) - t * 
                  log(gamma(nu/2)), c("nu"), function(nu) {
                  }, hessian = TRUE)

aux1 <- myfunction(x)

out <- attr(aux1, "gradient")[1]

}

proc.time() - ptm

При сравнении скорости выполнения моих кодов R и MATLAB, R намного быстрее, чем MATLAB.

код MATLAB: 28 секунд;Код R: 0,18 секунды.

Как это возможно?Я что-то пропустил?

...