-->// Already diagonal but with a negative value -->a=[4 0; 0 -9] a = 4. 0. 0. - 9. -->[u s v]=svd(a) v = 0. 1. - 1. 0. s = 9. 0. 0. 4. u = 0. 1. 1. 0. -->u*s*v ans = - 4. 0. 0. 9. -->u*s*v' ans = 4. 0. 0. - 9. -->// complex values -->a=[%i 0; 0 -%i] a = i 0 0 - i -->[u s v]=svd(a) v = - 1. 0 0 - 1. s = 1. 0. 0. 1. u = - i 0 0 i -->u*s*v' ans = i 0 0 - i -->// non-symmetric -->p=[1 1; 0 1] p = 1. 1. 0. 1. -->a=p*[4 0 ; 0 9 ] *p^(-1) a = 4. 5. 0. 9. -->[u s v]=svd(a) v = 0.2075915 - 0.9782156 0.9782156 0.2075915 s = 10.499728 0. 0. 3.4286602 u = 0.5449135 - 0.8384922 0.8384922 0.5449135 -->// note lack of relation between eigenvalues and singular values -->u*s*v' ans = 4. 5. - 1.355E-17 9. -->// svd works with non-square matrices -->a=[1 0; 1 1 ; 0 1] a = 1. 0. 1. 1. 0. 1. -->[u s v]=svd(a) v = - 0.7071068 0.7071068 - 0.7071068 - 0.7071068 s = 1.7320508 0. 0. 1. 0. 0. u = - 0.4082483 0.7071068 0.5773503 - 0.8164966 - 1.160E-17 - 0.5773503 - 0.4082483 - 0.7071068 0.5773503 -->u*s*v' ans = 1. 1.014E-17 1. 1. 1.672E-16 1. -->[p, d] = spec (a'*a) d = 1. 0. 0. 3. p = - 0.7071068 0.7071068 0.7071068 0.7071068 -->diary(0)