2014-05-13 35 views
0

我有以下腳本,定義一個函數,並建立和公式:解方程數值包含日誌

H = @(f) sum(log(f)); 
f = rand(1, 1); 

syms a 
H(f)-H(f-a) 

我要解決H(f)-H(f-a)=0a。我嘗試了以下方式使用fzero,fzero('H(f)-H(f-a)', 0),但這不會給我帶來任何有用的幫助。

回答

0

那麼明確的答案就是a = 0。這當然是一個明顯的答案,並且可能是爲什麼你沒有得到「有用的東西」,特別是當只考慮f的一個值時。

但是,當您添加更多值並使用solve函數時,您實際上可以獲得有用的信息。

H = @(f) sum(log(f)); 
f = rand(5, 1); 
syms a 
temp = H(f)-H(f-a); 
out = double(solve(temp == 0,a)); 

這將輸出一個向量,其中包含您的函數解決方案的所有值。請注意,這可能不會產生一般的最佳答案,但高階函數的數值求解相當困難且不可靠。因此,運行也可能需要很長時間。