Приближение к пределу неявной функции через сечение пополамC#

Место общения программистов C#
Ответить
Anonymous
 Приближение к пределу неявной функции через сечение пополам

Сообщение Anonymous »

Мне нужно выполнить деление пополам функции, а не массива. Мои исследования API .NET дали только Array.BinarySearch, где искомый домен представляет собой массив, но это не мой случай.
Воспроизводимость проста. Любая функция с сигнатурой

Код: Выделить всё

public static bool IsValid(double x)
имеет ту же подпись, что и функция, которую мне нужно найти. С точки зрения поведения мне нужно будет предположить, что функция является монотонной по возвращаемому значению, но может увеличиваться или уменьшаться: то есть для значения x, которое мне нужно найти, возвращаемое значение истинно для всех x выше него и false для всех x ниже него, или это может быть инвертированная версия этого.
Моя подпись функции поиска будет выглядеть так:

Код: Выделить всё

public double Bisect(Func func, double xTrue, double xFalse, double tolerance = 1e-3)
где
  • — функция, которую нужно вызывать повторно
  • — известное значение x, для которого func возвращает true
  • — известное значение x, для которого func возвращает false
  • Код: Выделить всё

    tolerance
    — это разница между двумя вызовами функций, ниже которой поиск прекращается.
Если нет ничего встроенного, я с удовольствием реализую это сам.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -bisection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»