我怎样才能找到这个方程的显式解?

How can I find an explicit solution to this equation?

在我工作的领域中有一种称为 SEDI 的分数:

我被要求为 F 求解这个方程。一个普遍可靠的消息来源告诉我应该有一个解析解。一般我用MATLAB来解决这样的问题,所以我尝试了

syms SEDI H F
solve(SEDI == ((log(F)-log(H)-log(1-F)+log(1-H)) / (log(F)+log(H)+log(1-F)+log(1-H))),F)

这给出了错误消息 Warning: Cannot find explicit solution. 然后我尝试重新排列为

solve(SEDI*(log(F) + log(H) + log(1-F) + log(1-H)) == log(F) - log(H) - log(1-F) + log(1-H),F)

但刚收到相同的错误消息。我想知道发生了什么事。一些可能性:

  1. 有解析解。 MATLAB找不到,其他软件可以。

  2. 有解析解。如果我以不同的方式询问它,MATLAB 可以解决它,也许是通过重新排列方程式?或者,通过向 MATLAB 提供更多信息——我知道 F 和 H 的范围只能从 0 到 1,而 SEDI 的范围只能从 -1 到 +1。

  3. 没有解析解。

或者存在程序难以找到的解析解。我试图在 Mathematica 中这样做,但它不想求解方程。但是,我能够手动解决它。如果我没有出错,有三种解决方案。然而,其中一个为 0 且不符合原方程。因此,最终的两种解法是

f= 1 +/- exp(-s/2)/h

仔细检查

充其量没有简单明确的解决方案。在0<f<10<h<1的限制下,可以找到sedih的各种值的解决方案。考虑 sedi=0。然后f=h.

假设sedi=1/2。那么 f 就是

如果sedi=1/3,那么f就是

可以使用 Mathematica 和以下代码来玩这个:

sedi = 1/3;
h =.;
ToRadicals[
 Solve[(sedi (Log[f] + Log[h] + Log[1 - f] + Log[1 - h]) == 
     Log[f] - Log[h] - Log[1 - f] + Log[1 - h]) && 0 < f < 1 && 
   0 < h < 1, f]]

此外,考虑 SEDI 值的轮廓:

ContourPlot[(Log[f] - Log[h] - Log[1 - f] + Log[1 - h])/(Log[f] + Log[h] + Log[1 - f] + Log[1 - h]),
 {f, 0.001, 0.999}, {h, 0.001, 0.999}, ContourLabels -> True,
 Contours -> {-0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0,
    0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9},
 FrameLabel -> (Style[#, Bold, Large] &) /@ {"f", "h", 
    "Contours of SEDI"}, ContourShading -> None, ContourStyle -> Gray]