2013-12-18 15 views
3

例如,C=0我試圖解決在Matlab中的函數:digamma(X)= C

solve('psi(x)=0') 

ans = 
-226.83295306016122662496413158295 

psi(ans) 

???Error using ==> psi 
Input must be single or double. 

我不能得到正確的答案

+0

您正在使用什麼版本的Matlab的呢?我在R2013a沒有問題。符號版本的psi只支持R2011b +。 – horchler

+0

非常感謝,當我在R2013a嘗試它時,沒有發生任何問題。但是,我不知道如何解方程digamma(x)= C,其中C是變量,而不是常量。你能幫助我嗎? – user3114396

+0

你基本上想要一個digamma函數的逆解析公式嗎?我不知道有一個存在。即使有假設,Matlab和Mathematica都不能解決它。問這個問題的評估地點是[Math.StackExchange](http://math.stackexchange.com)。但是我認爲,除非您使用近似分析解決方案,否則您會使用數字或符號數字方法。 – horchler

回答

1

有趣......這似乎是一個在solve給我的錯誤...無論我試圖解決什麼值,我總是得到一個奇怪的值大約-227。甚至當我嘗試通過給digamma的近似欺騙MATLAB,我得到了相同的結果或者更糟:

>> solve('(gamma(x+0.01)-gamma(x))/0.01/gamma(x)=0') 
ans = 
    matrix([[-226.83790783643886637282996154237]]) 

>> solve('(gammaln(x+0.01)-gammaln(x-0.01))/0.02 = 0') 
??? Error using ==> mupadmex 
Error in MuPAD command: cannot differentiate equation [numeric::fsolve] 

以下數值方法的工作原理:

%// value of the digamma to solve for 
Y = -10; 

%// Solve using numerical scheme 
X = fsolve(@(x)psi(max(0,x)) - Y, exp(Y)) 

%// Check solution: psi(X) ≈ Y 
psi(X) 
+0

+1此處同樣(2010b)。我總是會在'-226'附近獲得價值。有趣的是,'solve('exp(psi(x))= 1')給出了'-14' –

+0

...和'solve('(psi(x))^ 2 = 0')_correctly_給出了'1.4616 ' –

+0

@LuisMendo:hmmmmmmmmmmmmmmm ....我真的沒有看到會發生什麼...偏移不是一個「顯而易見的」值,似乎也沒有遵循一些簡單的轉換規則......事實上沒有任何警告或錯誤只會讓它聞起來像「臭蟲」。 –