开发者

Excel GoalSeek algorithm

开发者 https://www.devze.com 2023-01-27 14:53 出处:网络
Does anyone have the code for this algorithm ? Any C-bas开发者_运维百科ed programming language would be OK but I prefer C#.

Does anyone have the code for this algorithm ? Any C-bas开发者_运维百科ed programming language would be OK but I prefer C#.

I could try to implement it but I'm sure I'm not the first one...

edit: It's not homework, it's a "gimme teh codez" question :D I just don't want to reinvent the wheel


GoalSeek most likely uses the Bisection method

The bisection method in mathematics is a root-finding method that repeatedly bisects an interval and then selects a subinterval in which a root must lie for further processing. It is a very simple and robust method, but it is also relatively slow. Because of this, it is often used to obtain a rough approximation to a solution which is then used as a starting point for more rapidly converging methods.1 The method is also called the interval halving method,2 the binary search method,[3] or the dichotomy method.[4]

I found a C# implementation here : Bisection-based XIRR implementation in C#


Have a look at:

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

Your algorithm needs to implement the IGoalSeekAlgorithm interface. Then usage is as follows:

var myAlgorithm = new MyAlgorithm(90463.45M, 200);
var goalSeeker = new GoalSeek(myAlgorithm);
var seekResult = goalSeeker.SeekResult(96178.21M);


Try https://www.nuget.org/packages/Budoom.GoalSeek/

Sample usage:

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

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

or use the static method and pass the calculation function to it, like this:

var goalSeekResult = Budoom.GoalSeek.TrySeek(Calculate);
0

精彩评论

暂无评论...
验证码 换一张
取 消