Я пытаюсь оценить этот многочлен:
Используя два разных подхода, один напрямую, а другой - правило Хорнера.Мой код:
Прямой путь:
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)))
Есть предложения?