2
$\begingroup$

(I'm working on Mathematica 10.3)

I have a system of 81 algebraic linear equations with 81 variables (variables are a1 to a81). The system is produced with a long notebook, so I simplified it for a certain case to the following. I would like to learn how to fix this issue once and for all because this is not the only system I'll have to solve.

eqs = {0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a1 + 0.000025` a28 - 
     0.000025` a4, 
   0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a2 + 0.000025` a29 - 
     0.000025` a5 - a2 (2.8733333333333335` + 28.0249516433` Bz) + 
     a2 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a3 + 0.000025` a30 - 
     0.000025` a6 - a3 (2.8706333333333336` + 28.0218750433` Bz) + 
     a3 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) - 0.000025` a1 + 
     0.000025` a31 - (0.` + 0.00010010000000000001` I) a4 - 
     0.000025` a7 + a4 (2.8660333333333337` + 28.0280282433` Bz) - 
     a4 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 0.000025` a2 + 
     0.000025` a32 - (0.` + 0.00010010000000000001` I) a5 - 
     0.000025` a8 + a5 (2.8660333333333337` + 28.0280282433` Bz) - 
     a5 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 0.000025` a3 + 
     0.000025` a33 - (0.` + 0.00010010000000000001` I) a6 - 
     0.000025` a9 + a6 (2.8660333333333337` + 28.0280282433` Bz) - 
     a6 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a34 - 
     0.000025` a4 - (0.` + 0.0002001` I) a7 - 
     a7 (2.8706333333333336` - 28.0218750433` Bz) + 
     a7 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a35 - 
     0.000025` a5 - (0.` + 0.0002001` I) a8 - 
     a8 (2.8733333333333335` - 28.0249516433` Bz) + 
     a8 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a36 - 
     0.000025` a6 - (0.` + 0.0002001` I) a9 - 
     a9 (2.8660333333333337` - 28.0280282433` Bz) + 
     a9 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a10 - 0.000025` a13 + 
     0.000025` a37 + a10 (2.8733333333333335` + 28.0249516433` Bz) - 
     a10 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a11 - 0.000025` a14 + 
     0.000025` a38, 
   0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a12 - 0.000025` a15 + 
     0.000025` a39 - a12 (2.8706333333333336` + 28.0218750433` Bz) + 
     a12 (2.8733333333333335` + 28.0249516433` Bz), 
   0 == (0.` + 0.` I) - 
     0.000025` a10 - (0.` + 0.00010010000000000001` I) a13 - 
     0.000025` a16 + 0.000025` a40 + 
     a13 (2.8733333333333335` + 28.0249516433` Bz) - 
     a13 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 
     0.000025` a11 - (0.` + 0.00010010000000000001` I) a14 - 
     0.000025` a17 + 0.000025` a41 + 
     a14 (2.8733333333333335` + 28.0249516433` Bz) - 
     a14 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 
     0.000025` a12 - (0.` + 0.00010010000000000001` I) a15 - 
     0.000025` a18 + 0.000025` a42 + 
     a15 (2.8733333333333335` + 28.0249516433` Bz) - 
     a15 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 0.000025` a13 - (0.` + 0.0002001` I) a16 + 
     0.000025` a43 - a16 (2.8706333333333336` - 28.0218750433` Bz) + 
     a16 (2.8733333333333335` + 28.0249516433` Bz), 
   0 == (0.` + 0.` I) - 0.000025` a14 - (0.` + 0.0002001` I) a17 + 
     0.000025` a44 - a17 (2.8733333333333335` - 28.0249516433` Bz) + 
     a17 (2.8733333333333335` + 28.0249516433` Bz), 
   0 == (0.` + 0.` I) - 0.000025` a15 - (0.` + 0.0002001` I) a18 + 
     0.000025` a45 - a18 (2.8660333333333337` - 28.0280282433` Bz) + 
     a18 (2.8733333333333335` + 28.0249516433` Bz), 
   0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a19 - 0.000025` a22 + 
     0.000025` a46 + a19 (2.8706333333333336` + 28.0218750433` Bz) - 
     a19 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a20 - 0.000025` a23 + 
     0.000025` a47 + a20 (2.8706333333333336` + 28.0218750433` Bz) - 
     a20 (2.8733333333333335` + 28.0249516433` Bz), 
   0 == (0.` + 0.` I) - (0.` + 0.0002001` I) a21 - 0.000025` a24 + 
     0.000025` a48, 
   0 == (0.` + 0.` I) - 
     0.000025` a19 - (0.` + 0.00010010000000000001` I) a22 - 
     0.000025` a25 + 0.000025` a49 + 
     a22 (2.8706333333333336` + 28.0218750433` Bz) - 
     a22 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 
     0.000025` a20 - (0.` + 0.00010010000000000001` I) a23 - 
     0.000025` a26 + 0.000025` a50 + 
     a23 (2.8706333333333336` + 28.0218750433` Bz) - 
     a23 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 
     0.000025` a21 - (0.` + 0.00010010000000000001` I) a24 - 
     0.000025` a27 + 0.000025` a51 + 
     a24 (2.8706333333333336` + 28.0218750433` Bz) - 
     a24 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 0.000025` a22 - (0.` + 0.0002001` I) a25 + 
     0.000025` a52 - a25 (2.8706333333333336` - 28.0218750433` Bz) + 
     a25 (2.8706333333333336` + 28.0218750433` Bz), 
   0 == (0.` + 0.` I) - 0.000025` a23 - (0.` + 0.0002001` I) a26 + 
     0.000025` a53 - a26 (2.8733333333333335` - 28.0249516433` Bz) + 
     a26 (2.8706333333333336` + 28.0218750433` Bz), 
   0 == (0.` + 0.` I) - 0.000025` a24 - (0.` + 0.0002001` I) a27 + 
     0.000025` a54 - a27 (2.8660333333333337` - 28.0280282433` Bz) + 
     a27 (2.8706333333333336` + 28.0218750433` Bz), 
   0 == (0.` + 0.` I) + 
     0.000025` a1 - (0.` + 0.00010010000000000001` I) a28 - 
     0.000025` a31 + 0.000025` a55 - 
     a28 (2.8660333333333337` + 28.0280282433` Bz) + 
     a28 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 
     0.000025` a2 - (0.` + 0.00010010000000000001` I) a29 - 
     0.000025` a32 + 0.000025` a56 - 
     a29 (2.8733333333333335` + 28.0249516433` Bz) + 
     a29 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 
     0.000025` a3 - (0.` + 0.00010010000000000001` I) a30 - 
     0.000025` a33 + 0.000025` a57 - 
     a30 (2.8706333333333336` + 28.0218750433` Bz) + 
     a30 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 0.000025` a28 - (I a31)/10000000 - 
     0.000025` a34 + 0.000025` a4 + 0.000025` a58 + 
     I (1/90000000 + 0.00006666666666666667` a1 + 
        0.00006666666666666667` a11 + 0.00006666666666666667` a21 + 
        0.00006666666666666667` a61 + 0.00006666666666666667` a71 + 
        0.00006666666666666667` a81), 
   0 == (0.` + 0.` I) - 0.000025` a29 - (I a32)/10000000 - 
     0.000025` a35 + 0.000025` a5 + 0.000025` a59 - 
     a32 (2.8733333333333335` - \[CapitalDelta]) + 
     a32 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 0.000025` a30 - (I a33)/10000000 - 
     0.000025` a36 + 0.000025` a6 + 0.000025` a60 - 
     a33 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]) + 
     a33 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 
     0.000025` a31 - (0.` + 0.00010010000000000001` I) a34 + 
     0.000025` a61 + 0.000025` a7 - 
     a34 (2.8706333333333336` - 28.0218750433` Bz) + 
     a34 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 
     0.000025` a32 - (0.` + 0.00010010000000000001` I) a35 + 
     0.000025` a62 + 0.000025` a8 - 
     a35 (2.8733333333333335` - 28.0249516433` Bz) + 
     a35 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) - 
     0.000025` a33 - (0.` + 0.00010010000000000001` I) a36 + 
     0.000025` a63 + 0.000025` a9 - 
     a36 (2.8660333333333337` - 28.0280282433` Bz) + 
     a36 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 
     0.000025` a10 - (0.` + 0.00010010000000000001` I) a37 - 
     0.000025` a40 + 0.000025` a64 - 
     a37 (2.8660333333333337` + 28.0280282433` Bz) + 
     a37 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 
     0.000025` a11 - (0.` + 0.00010010000000000001` I) a38 - 
     0.000025` a41 + 0.000025` a65 - 
     a38 (2.8733333333333335` + 28.0249516433` Bz) + 
     a38 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 
     0.000025` a12 - (0.` + 0.00010010000000000001` I) a39 - 
     0.000025` a42 + 0.000025` a66 - 
     a39 (2.8706333333333336` + 28.0218750433` Bz) + 
     a39 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a13 - 0.000025` a37 - (I a40)/
     10000000 - 0.000025` a43 + 0.000025` a67 + 
     a40 (2.8733333333333335` - \[CapitalDelta]) - 
     a40 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a14 - 0.000025` a38 - (I a41)/
     10000000 - 0.000025` a44 + 0.000025` a68 + 
     I (1/90000000 + 0.00006666666666666667` a1 + 
        0.00006666666666666667` a11 + 0.00006666666666666667` a21 + 
        0.00006666666666666667` a61 + 0.00006666666666666667` a71 + 
        0.00006666666666666667` a81), 
   0 == (0.` + 0.` I) + 0.000025` a15 - 0.000025` a39 - (I a42)/
     10000000 - 0.000025` a45 + 0.000025` a69 + 
     a42 (2.8733333333333335` - \[CapitalDelta]) - 
     a42 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a16 - 
     0.000025` a40 - (0.` + 0.00010010000000000001` I) a43 + 
     0.000025` a70 - a43 (2.8706333333333336` - 28.0218750433` Bz) + 
     a43 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a17 - 
     0.000025` a41 - (0.` + 0.00010010000000000001` I) a44 + 
     0.000025` a71 - a44 (2.8733333333333335` - 28.0249516433` Bz) + 
     a44 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a18 - 
     0.000025` a42 - (0.` + 0.00010010000000000001` I) a45 + 
     0.000025` a72 - a45 (2.8660333333333337` - 28.0280282433` Bz) + 
     a45 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 
     0.000025` a19 - (0.` + 0.00010010000000000001` I) a46 - 
     0.000025` a49 + 0.000025` a73 - 
     a46 (2.8660333333333337` + 28.0280282433` Bz) + 
     a46 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 
     0.000025` a20 - (0.` + 0.00010010000000000001` I) a47 - 
     0.000025` a50 + 0.000025` a74 - 
     a47 (2.8733333333333335` + 28.0249516433` Bz) + 
     a47 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 
     0.000025` a21 - (0.` + 0.00010010000000000001` I) a48 - 
     0.000025` a51 + 0.000025` a75 - 
     a48 (2.8706333333333336` + 28.0218750433` Bz) + 
     a48 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a22 - 0.000025` a46 - (I a49)/
     10000000 - 0.000025` a52 + 0.000025` a76 + 
     a49 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]) - 
     a49 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a23 - 0.000025` a47 - (I a50)/
     10000000 - 0.000025` a53 + 0.000025` a77 - 
     a50 (2.8733333333333335` - \[CapitalDelta]) + 
     a50 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a24 - 0.000025` a48 - (I a51)/
     10000000 - 0.000025` a54 + 0.000025` a78 + 
     I (1/90000000 + 0.00006666666666666667` a1 + 
        0.00006666666666666667` a11 + 0.00006666666666666667` a21 + 
        0.00006666666666666667` a61 + 0.00006666666666666667` a71 + 
        0.00006666666666666667` a81), 
   0 == (0.` + 0.` I) + 0.000025` a25 - 
     0.000025` a49 - (0.` + 0.00010010000000000001` I) a52 + 
     0.000025` a79 - a52 (2.8706333333333336` - 28.0218750433` Bz) + 
     a52 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a26 - 
     0.000025` a50 - (0.` + 0.00010010000000000001` I) a53 + 
     0.000025` a80 - a53 (2.8733333333333335` - 28.0249516433` Bz) + 
     a53 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a27 - 
     0.000025` a51 - (0.` + 0.00010010000000000001` I) a54 + 
     0.000025` a81 - a54 (2.8660333333333337` - 28.0280282433` Bz) + 
     a54 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a28 - (0.` + 0.0002001` I) a55 - 
     0.000025` a58 + a55 (2.8706333333333336` - 28.0218750433` Bz) - 
     a55 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a29 - (0.` + 0.0002001` I) a56 - 
     0.000025` a59 + a56 (2.8706333333333336` - 28.0218750433` Bz) - 
     a56 (2.8733333333333335` + 28.0249516433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a30 - (0.` + 0.0002001` I) a57 - 
     0.000025` a60 + a57 (2.8706333333333336` - 28.0218750433` Bz) - 
     a57 (2.8706333333333336` + 28.0218750433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a31 - 
     0.000025` a55 - (0.` + 0.00010010000000000001` I) a58 - 
     0.000025` a61 + a58 (2.8706333333333336` - 28.0218750433` Bz) - 
     a58 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a32 - 
     0.000025` a56 - (0.` + 0.00010010000000000001` I) a59 - 
     0.000025` a62 + a59 (2.8706333333333336` - 28.0218750433` Bz) - 
     a59 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a33 - 
     0.000025` a57 - (0.` + 0.00010010000000000001` I) a60 - 
     0.000025` a63 + a60 (2.8706333333333336` - 28.0218750433` Bz) - 
     a60 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a34 - 
     0.000025` a58 - (0.` + 0.0002001` I) a61, 
   0 == (0.` + 0.` I) + 0.000025` a35 - 
     0.000025` a59 - (0.` + 0.0002001` I) a62 - 
     a62 (2.8733333333333335` - 28.0249516433` Bz) + 
     a62 (2.8706333333333336` - 28.0218750433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a36 - 
     0.000025` a60 - (0.` + 0.0002001` I) a63 - 
     a63 (2.8660333333333337` - 28.0280282433` Bz) + 
     a63 (2.8706333333333336` - 28.0218750433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a37 - (0.` + 0.0002001` I) a64 - 
     0.000025` a67 + a64 (2.8733333333333335` - 28.0249516433` Bz) - 
     a64 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a38 - (0.` + 0.0002001` I) a65 - 
     0.000025` a68 + a65 (2.8733333333333335` - 28.0249516433` Bz) - 
     a65 (2.8733333333333335` + 28.0249516433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a39 - (0.` + 0.0002001` I) a66 - 
     0.000025` a69 + a66 (2.8733333333333335` - 28.0249516433` Bz) - 
     a66 (2.8706333333333336` + 28.0218750433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a40 - 
     0.000025` a64 - (0.` + 0.00010010000000000001` I) a67 - 
     0.000025` a70 + a67 (2.8733333333333335` - 28.0249516433` Bz) - 
     a67 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a41 - 
     0.000025` a65 - (0.` + 0.00010010000000000001` I) a68 - 
     0.000025` a71 + a68 (2.8733333333333335` - 28.0249516433` Bz) - 
     a68 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a42 - 
     0.000025` a66 - (0.` + 0.00010010000000000001` I) a69 - 
     0.000025` a72 + a69 (2.8733333333333335` - 28.0249516433` Bz) - 
     a69 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a43 - 
     0.000025` a67 - (0.` + 0.0002001` I) a70 + 
     a70 (2.8733333333333335` - 28.0249516433` Bz) - 
     a70 (2.8706333333333336` - 28.0218750433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a44 - 
     0.000025` a68 - (0.` + 0.0002001` I) a71, 
   0 == (0.` + 0.` I) + 0.000025` a45 - 
     0.000025` a69 - (0.` + 0.0002001` I) a72 - 
     a72 (2.8660333333333337` - 28.0280282433` Bz) + 
     a72 (2.8733333333333335` - 28.0249516433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a46 - (0.` + 0.0002001` I) a73 - 
     0.000025` a76 + a73 (2.8660333333333337` - 28.0280282433` Bz) - 
     a73 (2.8660333333333337` + 28.0280282433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a47 - (0.` + 0.0002001` I) a74 - 
     0.000025` a77 + a74 (2.8660333333333337` - 28.0280282433` Bz) - 
     a74 (2.8733333333333335` + 28.0249516433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a48 - (0.` + 0.0002001` I) a75 - 
     0.000025` a78 + a75 (2.8660333333333337` - 28.0280282433` Bz) - 
     a75 (2.8706333333333336` + 28.0218750433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a49 - 
     0.000025` a73 - (0.` + 0.00010010000000000001` I) a76 - 
     0.000025` a79 + a76 (2.8660333333333337` - 28.0280282433` Bz) - 
     a76 (2.8683333333333336` + 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a50 - 
     0.000025` a74 - (0.` + 0.00010010000000000001` I) a77 - 
     0.000025` a80 + a77 (2.8660333333333337` - 28.0280282433` Bz) - 
     a77 (2.8733333333333335` - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a51 - 
     0.000025` a75 - (0.` + 0.00010010000000000001` I) a78 - 
     0.000025` a81 + a78 (2.8660333333333337` - 28.0280282433` Bz) - 
     a78 (2.8683333333333336` - 0.0030766` Bz - \[CapitalDelta]), 
   0 == (0.` + 0.` I) + 0.000025` a52 - 
     0.000025` a76 - (0.` + 0.0002001` I) a79 + 
     a79 (2.8660333333333337` - 28.0280282433` Bz) - 
     a79 (2.8706333333333336` - 28.0218750433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a53 - 
     0.000025` a77 - (0.` + 0.0002001` I) a80 + 
     a80 (2.8660333333333337` - 28.0280282433` Bz) - 
     a80 (2.8733333333333335` - 28.0249516433` Bz), 
   0 == (0.` + 0.` I) + 0.000025` a54 - 
     0.000025` a78 - (0.` + 0.0002001` I) a81};

This system has two additional parameters, Bz and Δ.

The problem: I would like to get the general solution of these equations as a function of Bz and Δ.

The method that works, but slow: If I replace Bz and Δ and then solve this system of equations, then it works like a charm! However, this is very, very slow! I need the solution for thousands of values of Bz and Δ, which is why I would like to get the general solution, Compile it, then evaluate it for any values I want of Bz and Δ.

The following is the solution that works, but slow:

res = Monitor[Table[
    Monitor[ParallelTable[
      Join[{\[CapitalDelta]}, 
       Re[#[[2]]] & /@ 
        Diagonal[
         Partition[
          Solve[eqs, 
            Table[ToExpression["a" <> ToString[i]], {i, 81}]][[1]], 
          9]]]
      , {\[CapitalDelta], -0.1, 0.1, 0.25 10^-3}], \[CapitalDelta]]
    , {Bz, {0.5, 1., 1.5, 2., 2.5, 3.} 10^-3}], Bz];
Show[Table[
  ListPlot[Table[{#[[1]], #[[k]]} & /@ 
     res[[i]], {k, {2, 3, 4, 8, 9, 10}}], PlotRange -> Full, 
   Joined -> True], {i, Length[res]}], Frame -> True, 
 FrameLabel -> {"Frequency (GHz)", 
   "Populations of \!\(\*SubscriptBox[\(m\), \(s\)]\)=\[PlusMinus]1"}]

This produces the plot I expect:

enter image description here

The issue: The system acts as unsolvable if I don't replace Bz and Δ, which Mathematically doesn't make sense! The existence of a solution when replacing Bz and Δ rules out by counter-example that this system doesn't have a general solution!

Try 1: Let's try to solve this system using just a Solve without replacing Bz and Δ, then:

Solve[eqs, Table[ToExpression["a" <> ToString[i]], {i, 81}]]

This gives an error:

Solve::svars: Equations may not give solutions for all "solve" variables. 

Try 2: Let's try to solve this matrix as a matrix using LinearSolve:

To create the matrix, I use the commands:

matRHS = Table[Coefficient[#[[2]] & /@ eqs, Table[ToExpression["a" <> ToString[i]], {i, 81}]], {i, 9^2}]
matLHS = -((#[[2]] & /@ eqs) /. 
Table[ToExpression["a" <> ToString[i]] -> 0, {i, 81}])

So if we look at the equations in the form mx==b (as LinearSolve's help page suggests), then matLHS is m (left hand side), being a 81x81 matrix. The matRHS is b. This is obtained by setting all parameters (a**) to zero.

Now we try to solve:

LinearSolve[matLHS, matRHS]

but doesn't work! and I get:

LinearSolve::nosol: Linear equation encountered that has no solution.

Well, this is no surprise, because magically I found that the determinant of the system IS ZERO!

Det[matLHS]

is:

0.

None of this is making any sense to me... could you please help me understand what is going on and why Mathematica only succeeds in solving this system when Bz and Δ are defined?

Thanks for any efforts.

PS: You can download the notebook that contains everything using this link.

$\endgroup$
2
  • $\begingroup$ What do you mean by "The existence of a solution when replacing Bz and Δ rules out by counter-example that this system doesn't have a general solution!"? Finding a particular solution for some value doesn't necessarily mean that there is a general solution for all possible values, does it? $\endgroup$
    – Sascha
    Commented Jan 8, 2016 at 11:52
  • $\begingroup$ @Sascha Actually it implies that this solution should be included when the variables are not replaced. By logic (counter-example): If this system has a solution for one case, it cannot be unsolvable for every case. In other words: The solution when the variables are replaced should be included in the case when the variables are not replaced, thus having a zero determinant doesn't make sense. $\endgroup$ Commented Jan 8, 2016 at 11:56

1 Answer 1

4
$\begingroup$

I'm not sure what exactly you did or what is going wrong because I seem to get different results. I will surmise that the mix of symbolic parameters and approximate coefficients at machine precision causes numeric problems. For example, if I do soln = Solve[eqs, vars] I get a dimensional solution set. If on the other hand I substitute values, e.g. soln = Solve[eqs /. Thread[params -> {1, 3}], vars] then I get a plausible numeric solution. Actually I am not clear on why you want to avoid going this route, since the resulting system is small as numeric dense systems go and Lapack-based solvers tend to do well with these.

Here is a way to get the "symbolic" solution, as well as some indication of why you really don't want to do that. The idea is to work with exact coefficients. Most of the coefficients rationalize nicely, but the ones that multiply Bz do not, so we rationalize the usual way and then force the rest to rationalize based on their bit patterns.

params = {Bz, \[CapitalDelta]};
linpolys = Apply[Subtract, eqs, 1];
vars = Complement[Variables[linpolys], params];
ratpolys = Rationalize[Rationalize[linpolys], 0];

This next takes a couple of minutes or so.

soln = Solve[ratpolys == 0, vars];

Here is the problem. It is huge. If you later substitute numeric values you might get terrible cancellation or roundoff error, rendering the result useless. Moreover, given the size, the substitutions themselves might take as much time to evalaute as a linear solve starting from the system with parameters replaced by substituted values.

LeafCount[soln]

(* Out[30]= 16519752 *)

The upshot is that while what you want to do can be done as above, it does not appear to be a winning strategy for the larger problem under consideration.

$\endgroup$
1
  • $\begingroup$ Well, I was hoping to find analytical solutions and then Compile the solution with the two parameters I have to make the evaluation super-fast... but it seems to be even slower! this is really disappointing! $\endgroup$ Commented Jan 8, 2016 at 16:20

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.