n*log2(n) = A
、A
既知の値。n
Matlabでどのように解決しますか? n
必ずしも整数ではないことに注意してください。
質問する
1472 次
4 に答える
6
または、方程式を解析的に解き、それを使用します。
n = A*log(2)/lambertw(A*log(2))
于 2012-09-21T13:20:06.313 に答える
2
最もエレガントなソリューションではありませんが、fminconを使用できます
n = fmincon(@(N) abs(N*log2(N)-A),10, [],[],[],[],1,Inf)
于 2012-09-21T12:43:28.017 に答える
2
使用するだけfzero
です:
solution = fzero(@(n) n.*log2(n)-A, A/5);
0 から 1000 までの間隔で解の動作を調べることにより、経験的に最初の推測を見つけました。ユースケースに合わせて調整することをお勧めします。
于 2012-09-21T14:26:40.120 に答える
1
Symbolic Math Toolboxがインストールされている場合、必要なのは次のとおりです。
solve('n*log2(n)=A', 'n')
ans =
(A*log(2))/lambertw(0, A*log(2))
solve
で使用することもできますsyms
:
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))
于 2012-09-21T14:18:00.803 に答える