2010-11-18 21 views

回答

4

fzero不是微不足道的。
如果你的函數是多項式,嘗試GSL http://www.gnu.org/software/gsl/

+0

不是多項式。這是一個非常複雜的代數函數。 – Brian 2010-11-18 00:30:01

4

試着看一下GNU Octave。它是MATLAB的FLOSS替代品,具有許多相同的功能。看看它的實現fzero,請記住代碼是GPL的。

1

我在C++中爲科學和工程應用做了很多工作。我最喜歡的參考之一是Numerical Recipes nr.com。本書的一些較早版本包括看起來像Fortran但是用C編寫的代碼,例如從1開始的數組索引。2007年的最新版本(僅限C++第三版)糾正了許多投訴,如1個索引數組和混淆命名空間。即使你不喜歡這些代碼,數學的簡單解釋也會讓這本書值得購買。被警告一些人認爲代碼的許可證很苛刻,但與Matlab相比,這是一個巨大的飛躍。其他要嘗試的是GSL和Intel Math Kernel Lib。祝你好運。

+0

查看布倫特方法的數值處方章節9.3。 – 2010-11-18 22:08:55

0

查看嵌入式matlab子集。它允許你將matlab腳本轉換爲C代碼。我使用它來創建我通過鏈接形成C++項目的matlab函數庫。它只支持一部分函數,​​但fzero包含在列表中,但有一些限制。 。 。

http://www.mathworks.com/help/toolbox/eml/ug/bq1h2z7-9.html

這可以讓你做你的算法開發中的溫暖和舒適Matlab環境下。 Matlab甚至會建立C庫。你所要做的就是鏈接到它。這是方式比學習一堆C++數值庫更容易,如果你已經熟悉Matlab的話。

0

我不認爲它包含一個fzero等價物,但Armadillo確實有許多MATLAB函數的C++版本(所以對於某些實例可能會這樣做)。例如參見this conversion table