mathmatrixoptimizationwolfram-mathematicaapproximation

Solving a system of matrix equations in Mathematica


I am trying to find a matrix that satisfies six matrix equations.

The equations are as follows:

(Conjugate[ConjugateTranspose[B1]].X.ConjugateTranspose[B1]) == TotalPrB1, (Conjugate[ConjugateTranspose[B2]].X.ConjugateTranspose[B2]) == TotalPrB2, (Conjugate[ConjugateTranspose[B3]].X.ConjugateTranspose[B3]) == TotalPrB3, (Conjugate[ConjugateTranspose[B4]].X.ConjugateTranspose[B4]) == TotalPrB4, (Conjugate[ConjugateTranspose[B5]].X.ConjugateTranspose[B5]) == TotalPrB5, (Conjugate[ConjugateTranspose[B6]].X.ConjugateTranspose[B6]) == TotalPrB6

Where, every matix is 8*8. I want to find a X that satisfies all the above equations.

I tried to use FindRoot and Nsolve function but was unable to get the desired result. FindRoot can only solve for X satisfying one matrix equation.

Can you suggest a way to find X solving the above system?


Solution

  • In a fraction of a second this

    B1=RandomReal[{-1,1},{8,8}];B2=RandomReal[{-1,1},{8,8}];B3=RandomReal[{-1,1},{8,8}];
    B4=RandomReal[{-1,1},{8,8}];B5=RandomReal[{-1,1},{8,8}];B6=RandomReal[{-1,1},{8,8}];
    X=Array[x,{8,8}];
    {TotalPrB1,TotalPrB2,TotalPrB3,TotalPrB4,TotalPrB5,TotalPrB6}=RandomReal[{-10,10},6];
    Reduce[{
      Conjugate[ConjugateTranspose[B1]].X.ConjugateTranspose[B1]==TotalPrB1,
      Conjugate[ConjugateTranspose[B2]].X.ConjugateTranspose[B2]==TotalPrB2,
      Conjugate[ConjugateTranspose[B3]].X.ConjugateTranspose[B3]==TotalPrB3,
      Conjugate[ConjugateTranspose[B4]].X.ConjugateTranspose[B4]==TotalPrB4,
      Conjugate[ConjugateTranspose[B5]].X.ConjugateTranspose[B5]==TotalPrB5,
      Conjugate[ConjugateTranspose[B6]].X.ConjugateTranspose[B6]==TotalPrB6},
      Flatten[X]]
    

    returns False, indicating that there is no solution for those particular coefficients. If I fake my matricies to ensure there is a solution then it finds it in the same fraction of a second. Based on experience, with this many variables you are VERY lucky that it is able to find any solution at all, I suspect that is only because the form of your problem is simple. BUT I have no idea what your six matricies and six coefficients are, yours probably aren't Real, and whether a solution exists for those nor not.

    So what happens when you use this code with your coefficients?