gonum.org/v1/gonum@v0.14.0/mat/eigen_example_test.go (about) 1 // Copyright ©2018 The Gonum Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package mat_test 6 7 import ( 8 "fmt" 9 "log" 10 11 "gonum.org/v1/gonum/mat" 12 ) 13 14 func ExampleEigenSym() { 15 a := mat.NewSymDense(2, []float64{ 16 7, 0.5, 17 0.5, 1, 18 }) 19 fmt.Printf("A = %v\n\n", mat.Formatted(a, mat.Prefix(" "))) 20 21 var eigsym mat.EigenSym 22 ok := eigsym.Factorize(a, true) 23 if !ok { 24 log.Fatal("Symmetric eigendecomposition failed") 25 } 26 fmt.Printf("Eigenvalues of A:\n%1.3f\n\n", eigsym.Values(nil)) 27 28 var ev mat.Dense 29 eigsym.VectorsTo(&ev) 30 fmt.Printf("Eigenvectors of A:\n%1.3f\n\n", mat.Formatted(&ev)) 31 32 // Output: 33 // A = ⎡ 7 0.5⎤ 34 // ⎣0.5 1⎦ 35 // 36 // Eigenvalues of A: 37 // [0.959 7.041] 38 // 39 // Eigenvectors of A: 40 // ⎡ 0.082 -0.997⎤ 41 // ⎣-0.997 -0.082⎦ 42 // 43 } 44 45 func ExampleEigen() { 46 a := mat.NewDense(2, 2, []float64{ 47 1, -1, 48 1, 1, 49 }) 50 fmt.Printf("A = %v\n\n", mat.Formatted(a, mat.Prefix(" "))) 51 52 var eig mat.Eigen 53 ok := eig.Factorize(a, mat.EigenLeft) 54 if !ok { 55 log.Fatal("Eigendecomposition failed") 56 } 57 fmt.Printf("Eigenvalues of A:\n%v\n", eig.Values(nil)) 58 59 // Output: 60 // A = ⎡ 1 -1⎤ 61 // ⎣ 1 1⎦ 62 // 63 // Eigenvalues of A: 64 // [(1+1i) (1-1i)] 65 }