使用两种不同的方法,一种是直接方法,另一种是霍纳法则。我的代码:
直接方式:
directpoly1 <- function(x, coef, seqcoef = seq(coef) - 1) {
sum(coef*x^seqcoef)
}
directpoly <- function(x, coef) {
seqcoef <- seq(coef) - 1
sapply(x, directpoly1, coef, seqcoef)
霍纳的规则:
hornerpoly <- function(x, coef) {
n <- length(coef);
a <- rep(0, n);
a[n] <- coef[n];
while (n > 0) {
n <- n - 1;
a[n] <- coef[n] + a[n + 1] * x;
}
return(a[1]);
}
我需要比较两种不同方法的速度,但是我不知道该怎么做。我最初的方法是:
system.time(directpoly(x=seq(-10,10, length=5000000), c(1:39)))
system.time(hornerpoly(x=seq(-10,10, length=5000000), c(1:39)))
有什么建议吗?
答案 0 :(得分:0)
ptm <- proc.time()
#.... your function ...
proc.time() - ptm
也对第二个功能执行此操作并比较时间。