1
$\begingroup$

I have the type of system M.x = b, where M is a known matrix and b is a known vector. M contains many parameters, call the entire parameter set 'a', so M => M[a].

I want to be able to efficiently evaluate x[a], i.e. x[a] is now a collection of functions with variables/parameters 'a'. How to do this in an optimal way?

The system can become very large, so that (symbolic) evaluation of LinearSolve[M,b] will take a long time. Also note that x can have many elements, and one could be interested in just evaluating x[[i]] in which case it is redundant to evaluate all the other elements of x.

EDIT

the system can e.g. be defined by:

b = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0}

M = {{1, 0, 0, 0, 1, 0, 0, 0, 1}, {-c21 - c31, 0, -I omge, 0, c12, 0, 
  I Conjugate[omge], 0, c13}, {0, 
  I (-dge + dse) - c1/4 - c12/2 - c2/4 - c21/2 - c31/2 - c32/
   2, -I omse, 0, 0, 0, 0, I Conjugate[omge], 
  0}, {-I Conjugate[omge], -I Conjugate[omse], -I dge - c1/4 - c13/2 -
    c21/2 - c23/2 - c3/4 - c31/2, 0, 0, 0, 0, 0, 
  I Conjugate[omge]}, {0, 0, 
  0, -I (-dge + dse) - c1/4 - c12/2 - c2/4 - c21/2 - c31/2 - c32/2, 
  0, -I omge, I Conjugate[omse], 0, 0}, {c21, 0, 0, 
  0, -c12 - c32, -I omse, 0, I Conjugate[omse], c23}, {0, 0, 
  0, -I Conjugate[omge], -I Conjugate[omse], -I dge - I (-dge + dse) -
    c12/2 - c13/2 - c2/4 - c23/2 - c3/4 - c32/2, 0, 0, 
  I Conjugate[omse]}, {I omge, 0, 0, I omse, 0, 0, 
  I dge - c1/4 - c13/2 - c21/2 - c23/2 - c3/4 - c31/2, 
  0, -I omge}, {0, I omge, 0, 0, I omse, 0, 0, 
  I dge + I (-dge + dse) - c12/2 - c13/2 - c2/4 - c23/2 - c3/4 - c32/
   2, -I omse}, {c31, 0, I omge, 0, c32, 
  I omse, -I Conjugate[omge], -I Conjugate[omse], -c13 - c23}}
$\endgroup$
3
  • $\begingroup$ Welcome to Mathematica SE. Could you be more specific by entering an example of your Linear System ? i.e. Sometimes Sparse Arrays help a lot. $\endgroup$
    – tchronis
    Commented Feb 20, 2014 at 12:47
  • $\begingroup$ So in your example the matrix's dimensions are 10x9. So x must be of 9th dimension and the system may prove impossible (10 equations - 9 variables). $\endgroup$
    – tchronis
    Commented Feb 20, 2014 at 14:11
  • $\begingroup$ In principle you are right, but in this case I know it is possible. The system encodes a set of differential equations for the nine elements of x, plus a boundary condition encoded it the first row of M. Actually the background info is that the nine components of x are elements of a 3-by-3 matrix, which is Hermitian and has Tr equal to 1 (which is the first row of M boundary condition) $\endgroup$
    – Sander
    Commented Feb 20, 2014 at 14:19

1 Answer 1

1
$\begingroup$

Exploring the above matrix M we get Dimensions[M]=={10,9}.

Also MatrixRank[M]==9 and MatrixRank[M[[1 ;; 9]]]==9 so we transform the system to a square system:

M = M[[1 ;; 9]];
b = b[[1 ;; 9]];
det = Det[M];

then simply calculating determinants we obtain the xi

solvefor[i_] := Module[{B},
  B = M; B[[All, i]] = b;
  Det[B]/det]

example : solvefor[1] solves for x1

$\endgroup$
2
  • $\begingroup$ Yes, this works perfectly, thanks a lot! $\endgroup$
    – Sander
    Commented Feb 20, 2014 at 15:40
  • $\begingroup$ You are welcome! $\endgroup$
    – tchronis
    Commented Feb 20, 2014 at 17:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.