我正在将matlab函数gamfit转换为Objective-C代码。在gamfit快要结束时,它调用了另一个名为fzero的函数:http://www.mathworks.com/help/techdoc/ref/fzero.html

即使在阅读了matlab文档之后,我仍然无法理解x0是矢量时此函数的工作方式,就像我的情况一样。

这是matlab文档在此主题上所说的:“如果x0是长度为2的向量,则fzero假设x0是fun(x0(1))的符号与fun(x0(2))的符号不同的间隔如果不正确,则会发生错误。以这样的间隔调用fzero可以确保fzero将在fun更改符号的点附近返回一个值。”

我希望也许有人已经在C / C ++ / objective-c中实现了此功能,使事情变得更容易。

任何帮助,将不胜感激。

最佳答案

GNU Octave是类似于MATLAB的开源软件。它具有许多MATLAB函数的实现。您可以在内部找到fzero -在源代码发行版中查找scripts/optimization/fzero.m。请注意,Octave已获得GPL许可,因此可能会影响您的决定。

根据注释,fzero应该是Bisection MethodSecant Method的组合。

另一个好的起点是Numercial Recipes系列丛书(选择最新的C ++版本)。

关于c++ - Matlab函数fzero的C/C++实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9613213/

10-10 11:54