1

I would like to solve this equation:

$$n \cdot 2^n = 15000$$

And according to WolframAlpha

$$n=\frac{W(15000\log(2))}{\log(2)}, \text{ where }\log\text{ is ln}$$

Which shows that I need to use the product log function $W$ which I tried looking up on wikipedia. I don't need the complex numbers, just real numbers.

Additionally, are there ways of solving the original equation without the $W$ functions?

Can someone explain the rules and how to do this please?

I would eventually like to implement a way to find $n$ programmaticly (if possible-in python).

Dacto
  • 125
  • Wolfram clearly says "$\log$" is the natural logarithm function. So you're misquoting them. – Michael Hardy Mar 12 '12 at 03:32
  • whoops, fixed it – Dacto Mar 12 '12 at 03:34
  • Surely there is some package somewhere on the 'net which implements the $W$ function. – Alex Becker Mar 12 '12 at 03:36
  • I'm also interested in ways of solving this without the $W$ function. The initial equation doesn't look as if a solution would be difficult...but I honestly don't know. – Dacto Mar 12 '12 at 03:40
  • Are you just asking how to approximate the W function numerically in general? Or just for this one particular case? If the former, then why focus on this one equation, and if the latter, then how much accuracy do you need (because W|A should be able to give a lot already). Also, the solution necessarily involves the W function - there is no other way of solving it here (except to work with the W function in disguise). – anon Mar 12 '12 at 03:47
  • 1
    You can always implement a root-finding algorithm like bisection search or Newton's method. If you want a simple mathematical expression that directly gives $n$, it doesn't exist except in terms of the $W$ function. –  Mar 12 '12 at 04:05
  • 1
    @Dacto just out of curiosity: why do you want to solve it w/o W()? I mean the solution is the Lambert W function (plus a log) -- you won't find another solution. Its like saying I want to find a solution of y = exp(x) but without the logarithm -- not gonna happen ;) – Georg M. Goerg Nov 12 '16 at 00:07

1 Answers1

2

You can use Newton's method for finding the root of $f(n) = n 2^n - 15000 = 0$: $$ n_{i+1} = n_i - \frac{f(n_i)}{f'(n_i)} = n_i - \frac{n_i 2^{n_i} - 15000}{2^{n_i} (1+n_i \log(2))} $$ and start with a suitable guess (look up the Wikipedia page on that). Here $n_0 = 1$ should do.You keep repeating the process for $i \ge 1$ until you reach a proper accuracy, i.e., you terminate at iteration $t$ when $n_{t} - n_{t-1} < \epsilon$ for some tiny $\epsilon$ you define.

Questions on exact implementation are more suitable question for SO; also scicomp.SE in case you're interested in details on appropriate numerical methods, and robust libraries.

  • Relevant: http://stackoverflow.com/questions/8222247/newtons-method-in-python –  Mar 12 '12 at 04:31
  • 1
    http://code.activestate.com/recipes/577729-lambert-w-function/ –  Mar 12 '12 at 04:32