Алгоритм Excel GoalSeek - PullRequest
       2

Алгоритм Excel GoalSeek

5 голосов
/ 26 ноября 2010

У кого-нибудь есть код для этого алгоритма?Любой язык программирования на основе C будет в порядке, но я предпочитаю C #.

Я мог бы попытаться реализовать его, но я уверен, что я не первый ...

edit: Это не домашняя работа, это вопрос "дай мне кодез": я просто не хочу изобретать велосипед

Ответы [ 3 ]

10 голосов
/ 26 ноября 2010

GoalSeek, скорее всего, использует метод деления пополам

Метод деления пополам в математике - это метод поиска корня, который многократно делит интервал, а затем выбирает подинтервал, в котором кореньдолжен лежать для дальнейшей обработки.Это очень простой и надежный метод, но он также относительно медленный.Из-за этого он часто используется для получения грубого приближения к решению, которое затем используется в качестве отправной точки для более быстро сходящихся методов. 1 Этот метод также называется методом деления пополам, 2 метод двоичного поиска, [3] или метод дихотомии. [4]

Я нашел реализацию C # здесь: Реализация XIRR на основе бисекции в C #

7 голосов
/ 13 мая 2016

Посмотрите на:

https://www.nuget.org/packages/TridentGoalSeek/

Ваш алгоритм должен реализовывать интерфейс IGoalSeekAlgorithm. Тогда использование выглядит следующим образом:

var myAlgorithm = new MyAlgorithm(90463.45M, 200);
var goalSeeker = new GoalSeek(myAlgorithm);
var seekResult = goalSeeker.SeekResult(96178.21M);
0 голосов
/ 14 октября 2018

Попробуйте https://www.nuget.org/packages/Budoom.GoalSeek/

Пример использования:

var sc = new SomeCalculation(); //implements interface Budoom.IGoalSeek

var goalSeek = new Budoom.GoalSeek(sc);
var goalSeekResult = goalSeek.TrySeek();

или используйте статический метод и передайте ему функцию вычисления, например:

var goalSeekResult = Budoom.GoalSeek.TrySeek(Calculate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...