# How to solve equations for the MMSE receiver?

Given the following equations for the achievable rate of the Minimum Mean-Squared Error Receiver [1]:

$$\mu = \frac{1}{K-1} \sum_{i=1, i \neq k}^{K}{\frac{1}{Mpd_{i}\left(1 - \frac{K-1}{M}+ \frac{K-1}{M}\mu \right) + 1}}$$

and

$$\kappa \left(1 + \sum_{i=1, i \neq k}^{K}{\frac{pd_{i}}{ \left( Mpd_{i}\left(1 - \frac{K-1}{M}+ \frac{K-1}{M}\mu \right) + 1 \right)^2} } \right) = \sum_{i=1, i \neq k}^{K}{\frac{pd_{i}\mu + 1}{ \left( Mpd_{i}\left(1 - \frac{K-1}{M}+ \frac{K-1}{M}\mu \right) + 1 \right)^2} }$$

I've got to find, $\mu$ and $\kappa$. I'm trying to solve these equations with matlab, firstly I tried with solve and then vpasolve, however, when $d$ is a vector with different numbers (i.e., random) it seems matlab never finds a solution. For the case when $d$ is a vector with all values equal to 1 for example, it finds the solution quickly.

This is the script I'm using to find the solution: https://pastebin.com/AWDwyR0U

Am I doing something wrong? Is there a faster way to find a solution to these equations?

Reference:

[1] Hien Quoc Ngo, Erik G. Larsson, and Thomas L. Marzetta, "Energy and Spectral Efficiency of Very Large Multiuser MIMO Systems", IEEE Transactions on Communications, vol. 61, no. 4, April 2013.

• Have you tried a symbolic math package such as SymPy? I've used them successfully a few times I've had to deal with hairy equations. – MBaz Jun 23 '18 at 22:20
• Felipe, I am sorry for not answering your ques for long time. I just had some personal issue done. If you are working on massive MIMO. I suggest you read the book:"Massive MIMO Networks: Spectral, Energy, and Hardware Efficiency"-Emil Bjornson, it has some closed-form MMSE and SINR user so that you can calculate and simulate the achievable rate very quick. For your equation, I am sorry I can't have because in my opinion, it's just mathematical problem, you should find an tight bound or approximation. – Dao Hieu Aug 16 '18 at 7:05
• Thanks Dao, in fact, I was able to solve those equations with matlab, see the answer below. – Felipe Augusto de Figueiredo Aug 16 '18 at 11:14

I doubt there is general closed-form solution. For the first equation, you essentially want to solve $$\mu=\sum_k \frac{1}{a_k+b_k \mu}$$ for $\mu$ which equals to search for the zeros of a $k+1$th order polynomial, which is impossible for $k>3$. So, I fear you need to do a numeric solution. Once you have $\mu$ you can go for a simple calculation of $\kappa$.

Regarding a numerical solution, here's a plot of $$\mu-\sum_k \frac{1}{a_k+b_k \mu}$$ which should become $0$ for the solution:

N = 7
d = np.random.rand(N)
K = N+1
M = 16
p = 1

f = lambda mu: mu - 1/(K-1)*sum(1/(M*p*d_i*(1-(K-1)/M+(K-1)/M*mu)+1) for d_i in d)

mu = np.linspace(-5,5,10000)
plt.grid(True)

plt.plot(mu, f(mu))
plt.ylim((-0.5,0.5))


So, there are multiple solutions. Maybe you need to pick to positive one?

I've found a way to solve numerically. First we change the equations to

$$\mu - \frac{1}{K-1} \sum_{i=1, i \neq k}^{K}{\frac{1}{Mpd_{i}\left(1 - \frac{K-1}{M}+ \frac{K-1}{M}\mu \right) + 1}} = 0$$

and

$$\kappa \left(1 + \sum_{i=1, i \neq k}^{K}{\frac{pd_{i}}{ \left( Mpd_{i}\left(1 - \frac{K-1}{M}+ \frac{K-1}{M}\mu \right) + 1 \right)^2} } \right) - \sum_{i=1, i \neq k}^{K}{\frac{pd_{i}\mu + 1}{ \left( Mpd_{i}\left(1 - \frac{K-1}{M}+ \frac{K-1}{M}\mu \right) + 1 \right)^2} } = 0$$

Next, by using fzero from Matlab we find $$\mu$$, finally, using $$\mu$$ and fzero again we can find $$\kappa$$.