我正在将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 Method和Secant Method的组合。
另一个好的起点是Numercial Recipes系列丛书(选择最新的C ++版本)。
关于c++ - Matlab函数fzero的C/C++实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9613213/