簡體   English   中英

Matlab函數fzero的C / C ++實現

[英]C/C++ implementation of matlab function fzero

我正在將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被認為是對分割線法的結合

另一個不錯的起點是Numercial Recipes系列書籍(選擇最新的C ++版本)。

GNU科學圖書館實施了許多方法來查找多項式和其他函數的根。 您可能可以改編他們的一些代碼,或者僅通過調用必要的函數來節省時間。

順便說一句:不是問“我如何在Objective-C中實現Matlab函數X?” 就像您現在已經做過幾次一樣,如果您問“如何在Objective-C中實現方法Y?”,您可能會取得更好的進步並獲得更好的答案。 我懷疑在某些情況下,您將不需要Matlab函數的全部通用性即可獲得所需的功能,因此Y可能不是X的全部。

Matlab代碼的逐行翻譯(即使您可以訪問它)也不可能使您獲得良好的Objective-C代碼; 例如,許多可用的Matlab代碼幾乎沒有顯示面向對象的跡象。 更好的方法是了解Matlab代碼的作用,並在Objective-C中實現它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM