Проблема
Учитывая функцию f
и список интересующих значений [y1, y2, ..., yn]
, как вы это делаете, чтобы найти список [x1, x2, ..., xn]
такой, что f(xi)=yi
для каждого i
.
Я знаю, что существует множество алгоритмов поиска root, и мы можем использовать любой из них, чтобы найти root из f-yi
, чтобы найти xi
. Однако, по крайней мере, для метода пополам, если я могу повторно использовать оцененные значения, тогда общее время должно быть уменьшено, особенно если оценка f
занимает много времени, верно?
Пример
Например, используя метод деления пополам, я хочу найти [x1, x2]
такое, что f([x1, x2])=[1, 5]
. При нахождении y1=1
эти значения оцениваются
+------+-----+----+
| iter | x | y |
+------+-----+----+
| 1 | 8 | 14 |
+------+-----+----+
| 2 | 4 | 6 |
+------+-----+----+
| 3 | 2 | 2 |
+------+-----+----+
| 4 | 1 | 0 |
+------+-----+----+
| 5 | 1.5 | 1 |
+------+-----+----+
и, следовательно, x1=1.5
. При нахождении y2=5
, если мы можем использовать оцененные значения и найти
+------+-----+---+
| iter | x | y |
+------+-----+---+
| 1 | 3 | 4 | <- because 2, 4 are evaluated
+------+-----+---+
| 2 | 3.5 | 5 |
+------+-----+---+
с меньшим количеством итераций, чем при неиспользовании.
Вопрос
Знаете ли вы какой-либо алгоритм, который его использует, любой язык подойдет? Или объясни, почему их нет?