Я закодировал в 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 секунды.
Как это возможно?Я что-то пропустил?