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);
精彩评论