【问题标题】:Excel GoalSeek algorithmExcel 目标搜索算法
【发布时间】:2010-11-26 10:10:54
【问题描述】:

有人有这个算法的代码吗?任何基于 C 的编程语言都可以,但我更喜欢 C#。

我可以尝试实现它,但我确定我不是第一个......

编辑:这不是家庭作业,这是一个“给我密码”的问题:D 我只是不想重新发明轮子

【问题讨论】:

  • 我不明白这个问题有什么问题。

标签: c# .net algorithm excel


【解决方案1】:

GoalSeek 最有可能使用Bisection method

数学中的二分法是一种求根法 反复平分一个区间,然后选择一个子区间 根必须存在以进行进一步处理。这是一个非常简单和健壮的 方法,但也比较慢。正因为如此,往往 用于获得一个解决方案的粗略近似值,然后使用 作为更快收敛方法的起点。1该方法 也叫区间减半法,2二分查找 方法,[3]或二分法。[4]

我在这里找到了一个 C# 实现:Bisection-based XIRR implementation in C#

【讨论】:

【解决方案2】:

看看:

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);

【讨论】:

    【解决方案3】:

    试试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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多