[GWM] One of the features of solving [Simultaneous Equations] is that eigenvalues come into the problem at least in theory. See also [Determinant of a matrix]. The largest eigenvalue of a matrix can be found by iteratively applying the matrix to a trial vector - gradually the vector will become constant in direction, and will be "eigenvalue" times longer each time the iteration is applied. If you are very lucky, you may find another eigenvector by chance of course! This example uses non-degenerate matrix, unlike the example in [Matrix determinant]. package require math::linearalgebra set m1 { {1 1 0} {0 1 2} {1 0 1} } set v {1 1 1} set i 0; while {$i<200} { incr i set v [::math::linearalgebra::matmul $m1 $v] set ev [::math::linearalgebra::norm $v] set v [::math::linearalgebra::unitLengthVector $v] } puts "Eigenvector of $m1 is approx $v, largest eigenvalue is $ev" Result: Eigenvector of {1 1 0} {0 1 2} {1 0 1} is approx 0.557506665977 0.702414383919 0.442493334025, largest eigenvalue is 2.2599210499 Even though the original vector is near an eigenvector the algorithm still finds the largest eigenvalue (as this is the most amplified by the matrix multiplication). Determining other eigenvectors I may come back to later.