例如,C=0
,我试图解决在Matlab中的函数:digamma(X)= C
solve('psi(x)=0')
ans =
-226.83295306016122662496413158295
psi(ans)
???Error using ==> psi
Input must be single or double.
我不能得到正确的答案
例如,C=0
,我试图解决在Matlab中的函数:digamma(X)= C
solve('psi(x)=0')
ans =
-226.83295306016122662496413158295
psi(ans)
???Error using ==> psi
Input must be single or double.
我不能得到正确的答案
有趣......这似乎是一个在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)
+1此处同样(2010b)。我总是会在'-226'附近获得价值。有趣的是,'solve('exp(psi(x))= 1')给出了'-14' –
...和'solve('(psi(x))^ 2 = 0')_correctly_给出了'1.4616 ' –
@LuisMendo:hmmmmmmmmmmmmmmm ....我真的没有看到会发生什么...偏移不是一个“显而易见的”值,似乎也没有遵循一些简单的转换规则......事实上没有任何警告或错误只会让它闻起来像“臭虫”。 –
您正在使用什么版本的Matlab的呢?我在R2013a没有问题。符号版本的psi只支持R2011b +。 – horchler
非常感谢,当我在R2013a尝试它时,没有发生任何问题。但是,我不知道如何解方程digamma(x)= C,其中C是变量,而不是常量。你能帮助我吗? – user3114396
你基本上想要一个digamma函数的逆解析公式吗?我不知道有一个存在。即使有假设,Matlab和Mathematica都不能解决它。问这个问题的评估地点是[Math.StackExchange](http://math.stackexchange.com)。但是我认为,除非您使用近似分析解决方案,否则您会使用数字或符号数字方法。 – horchler