如何解决matlab中的n * log2(n)= A?

时间:2012-09-21 12:31:35

标签: matlab equation-solving

n*log2(n) = AA已知值。如何在Matlab中解决n?请注意,n不一定是整数。

4 个答案:

答案 0 :(得分:6)

solve the equation analytically并使用:

n = A*log(2)/lambertw(A*log(2))

答案 1 :(得分:2)

不是最优雅的解决方案,但您可以使用fmincon

n = fmincon(@(N) abs(N*log2(N)-A),10, [],[],[],[],1,Inf)

答案 2 :(得分:2)

只需使用fzero

solution = fzero(@(n) n.*log2(n)-A, A/5);

我通过检查解决方案在0-1000区间的行为来经验性地找到了最初的猜测。你可能想根据你的用例调整它。

答案 3 :(得分:1)

如果您安装了Symbolic Math Toolbox,您只需要:

solve('n*log2(n)=A', 'n')

ans =
    (A*log(2))/lambertw(0, A*log(2))

您还可以将solvesyms

一起使用
syms n A

solve(n*log2(n)==A, n)

syms n A之后,您还可以定义A

的值
A = 0
solve(n*log2(n)==A, n)

ans =
    1

A = 2
solve(n*log2(n)==A, n)

ans =
    2

A = 3
solve(n*log2(n)==A, n)

ans =
    (3*log(2))/lambertw(0, 3*log(2))