Ошибка интегрирования: достигнуто максимальное число подразделений
Я пытаюсь построить интеграл Фурье, но я получаю ошибку при интеграции
X <- seq(-10, 10, by = 0.05)
f_fourier <- function(X) {
Y <- sapply(X, function(x) {
integrand <- function(l) {
y <- (2 / pi) * cos(l * x) / (l^2 + 1)
}
integrate(integrand, lower = 0, upper = Inf)$value
})
}
plot(X,f_fourier(X))
ошибка:
maximum number of subdivisions reached
я узнал, что" cos(l * x) " вызывает эту ошибку, но Вольфрам дает мне нормальный результат. Вы можете что-нибудь предложить?
1 ответов
алгоритм не сходится до превышения 100 подразделений. Вы можете увеличить количество разрешенных подразделений или увеличить допуск:
более допускается подразделения:
f_fourier <- function(X) {
Y <- sapply(X, function(x) {
integrand <- function(l) {
y <- (2 / pi) * cos(l * x) / (l^2 + 1)
}
integrate(integrand, lower = 0, upper = Inf, subdivisions=2000)$value
})
}
plot(f_fourier(X))
повышенная толерантность:
f_fourier <- function(X) {
Y <- sapply(X, function(x) {
integrand <- function(l) {
y <- (2 / pi) * cos(l * x) / (l^2 + 1)
}
integrate(integrand, lower = 0, upper = Inf, rel.tol=.Machine$double.eps^.05)$value
})
}
plot(f_fourier(X))