符号导数:为什么我的R代码比我的MATLAB代码快得多?

时间:2019-03-13 11:35:31

标签: r matlab symbolic-math

我用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秒。

怎么可能?我想念什么吗?

0 个答案:

没有答案