有没有人拥有此算法的代码?任何基于C语言的编程语言都可以,但我更喜欢C#。
我可以尝试实施它,但我确定我不是第一个......
编辑:这不是家庭作业,这是一个“gimme teh codez”的问题:D我只是不想重新发明轮子
答案 0 :(得分:10)
GoalSeek最有可能使用Bisection method
数学中的二分法是一种根发现方法 重复平分一个间隔,然后选择一个子区间 根必须进行进一步处理。这是一个非常简单和强大的 方法,但它也相对较慢。因此,它经常是 用于获得随后使用的溶液的粗略近似 作为更快速融合方法的起点。1方法 也称为区间对分方法,2二进制搜索 方法,[3]或二分法。[4]
我在这里找到了一个C#实现:Bisection-based XIRR implementation in C#
答案 1 :(得分:7)
看看:
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);
答案 2 :(得分:0)
尝试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);