2012-11-28 26 views
1

我寫了一個簡單的程序,使用稱爲Newton Raphson方法的數值方法找到非線性方程的根,因此我需要計算某些點的函數導數。 我使用的功能「差異」,它接受一個字符串,並返回其派生然後我用eval計算切線的斜率:Diff函數在編譯時不起作用

func='sin(x^2)'; 
x=4.5; 
slope=eval(diff(func)); 

的代碼是一個.m文件是沿着一些其他.FIG內的文件。 當我在GUIDE環境中或通過MATLAB的命令窗口調試/運行它時,一切看起來都很好,只有一個警告提示函數將在以後的版本中被棄用。 但是,當我用以下命令編譯文件:「mcc -e file1 file2」,並運行.exe時,它會拋出運行時錯誤,當它到達具有「diff」和嘟嘟聲的特定行時! 是否有任何其他方式來計算應用程序文件中也支持的派生(符號/非數字)?

回答

1

這是討論的here。問題是func而不是diff。你不能使用另一種方法來將函數定義爲字符串嗎?如果可能,請將func作爲普通函數文件,然後將其包含在已部署的軟件包中。

+0

該功能是由用戶通過UI給出的,因此它沒有被定義或是一個確切的功能。 – chakmeshma

+2

哦,我明白了。在這種情況下,使用函數字符串和eval將不起作用。你可以設計一個計算器式的界面,並通過點擊適當的按鈕讓他們輸入表達式,或者你可以嘗試將用戶類型表達式解析爲它的matlab函數對應表達式。後者聽起來很痛苦。 – jerad

相關問題