我用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秒。
怎么可能?我想念什么吗?