Метод золотого сечения — метод поиска экстремума действительной функции одной переменной на заданном отрезке. В основе метода лежит принцип деления отрезка в пропорциях золотого сечения. Является одним из простейших вычислительных методов решения задач оптимизации. Впервые представлен Джеком Кифером в 1953 году.
Метод описан на википедии: (Википедия)
Про самое золотое число: https://ru.wikipedia.org/wiki/Золотое_сечение
Должна считать для полоительных и отрицательных значений.
sapply(-10:10, FUN = fib)
## [1] -55 34 -21 13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8
## [18] 13 21 34 55
Функцию, которая оптимизирует заданную функци f
на отрезке [a,b]
с заданной точностью \(\epsilon\).
zs <- function(a, b, f, e){
# тело функции
}
Задать некоторую функцию
f <- function(r) abs(sum(c(-400, 100/((1+r)^(1:10)))))
sapply(X = seq(from = 0.1, to = 1, by = 0.1), FUN = f)
## [1] 214.45671 19.24721 90.84605 158.64290 203.46831 234.84916 257.85148
## [8] 275.35009 289.07012 300.09766
Найти экстремумы для разных точностей.
e <- c(1, cumprod(rep(0.9, 20)))
zs2 <- function(e) zs(a = 0, b = 1, f = f, e)
sapply(e, zs2)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,] 0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
## [2,] 1 0.618034 0.618034 0.618034 0.618034 0.381966 0.381966 0.381966
## [,9] [,10] [,11] [,12] [,13] [,14] [,15]
## [1,] 0.000000 0.000000 0.145898 0.145898 0.145898 0.145898 0.1458980
## [2,] 0.381966 0.381966 0.381966 0.381966 0.381966 0.381966 0.2917961
## [,16] [,17] [,18] [,19] [,20] [,21]
## [1,] 0.1458980 0.1458980 0.1458980 0.1458980 0.145898 0.145898
## [2,] 0.2917961 0.2917961 0.2917961 0.2917961 0.236068 0.236068
Используйте библиотеку manipulate
для следующего графического представления:
Пример графика