2
$\begingroup$

I am implementing some DSP algorithms on FPGAs and I am trying to do some optimizations in order to speed-up the processing. I want to understand how to manually solve an equation such as this: $$\sum_n(a_n)^x = b$$

Thanks in advance :)

PS: I would post the equations directly in here but stackexchange says I do not have enough reputation points to post images. Sorry about that

2 Answers 2

4

For general coefficients, there is no closed-form solution and you need to resort to numerical methods (Newton should be fine, but you should study the number and location of the roots first.)

By the change of variable $t=e^x$, you turn the equation into a generalized polynomial one

$$\sum_n t^{\log a_n} = b$$ which is a way to see that there is no closed-form.

Note that if all $a_n>1$, the derivative says

$$f'(x)=\sum_n\log a_n{a_n^x},$$ which is a positive expression. Then for $b>0$ there is a single solution. If $b\gg1$, a good approximation is given by the leading term,

$$x\approx\log_{a_{max}}b$$ where $a_{max}$ is the largest constant.


It is also interesting to look at the function

$$\log\left(\sum_n{a_n^x}\right),$$ which is asymptotic to $x\log a_{min}$ in the negatives and $x\log a_{max}$ in the positives, hence the graph is made of two smoothly connected half-lines.

For the given example:

enter image description here

0

The Newton zero point calculation can be very helpful:

$\displaystyle f(x):=\sum\limits_{k=1}^n a_k^x -b$

$\displaystyle x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}\enspace $ with $\enspace x_0\enspace $ as a starting value near by a zero point.

Your example with $f(x):=2^x+3^x-3$ :

$\displaystyle x_{n+1}=x_n-\frac{2^{x_n}+3^{x_n}-3}{2^{x_n}\ln2+3^{x_n}\ln3}\enspace $ with the starting value $\enspace x_0:=1$ .