2016-09-26 83 views
1

在我工作有一种得分领域称为SEDI:如何找到这个等式的显式解决方案?

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. 没有分析解决方案。

回答

1

在最好没有简单明确的解决方案。有了0<f<10<h<1的限制,人们可以找到各种值sedih的解决方案。考虑sedi=0。然后f=h

假设sedi=1/2。然后fEquation for sedi equal one-half

如果sedi=1/3,然后f

Result for f when sedi is one-third

人们可以使用玩这个数学用下面的代码:

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] 

enter image description here

0

或者有一个解决方案,程序无法找到。我试图在Mathematica中做它,它不想解决方程式。但是,我能够手工解决这个问题。如果我没有犯错,有三种解决方案。但是,其中一个0,并不符合原始方程。因此,最终的两种解决方案是

F = 1个+/- EXP(-s/2)/ h的

仔细检查的是,虽然

+0

显然,只有'F = 1-EXP(-S/2)/ H'可能是有意义的(0

+0

@SeverinPappadeux我试过了,据我所知它不符合原始方程。你的代码中可能存在拼写错误? – user1205197

+0

对不起,我犯了一个数学错误。 (s-1)f ^(s-1)=(h-1)^(1-s)/ h ^(s + 1)' – user1543042

相关问题