Finding eigenvectors is fast, easy and efficient when the matrix is symmetric, but alas M is not symmetric unless the Ci are all the same. To get around this we note that cij is symmetric and adopt ti = Ti√Ci as a temporary surrogates for the temperatures.
dTi/dt = ΣjMijTj
(dti/dt)/√Ci = Σj(Mijtj/√Cj)
dti/dt = Σj((Mij√Ci)tj/√Cj)
dti/dt = Σj((Mij√Ci)/√Cj)tj
dti/dt = Σj(((cij/Ci)√Ci)/√Cj)tj
dti/dt = Σj(cij/√(CiCj))tj
dti/dt = Σjmijtj where mij = cij/√(CiCj)

Note that the new matrix m is symmetric! cij is symmetric indeed for heat flow problems and most other physics problems where reciprocity reigns.

Let D be a diagonal matrix where Dii = 1/Ci. We may now write the matrix equation m = DC (this is a different m!! Fix! ....) and use this code to compute eigenvectors and values for m.

We find g so that gmg−1 is diagonal with diagonal elements dj. If Ej is the jth basis vector in the new coordinates then our general solution to the equations is:
ΣjajEjedjt. The n reals aj are the parameters to the solution.