| // Copyright ©2018 The Gonum Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package mat_test |
| |
| import ( |
| "fmt" |
| "log" |
| |
| "gonum.org/v1/gonum/mat" |
| ) |
| |
| func ExampleEigenSym() { |
| a := mat.NewSymDense(2, []float64{ |
| 7, 0.5, |
| 0.5, 1, |
| }) |
| fmt.Printf("A = %v\n\n", mat.Formatted(a, mat.Prefix(" "))) |
| |
| var eigsym mat.EigenSym |
| ok := eigsym.Factorize(a, true) |
| if !ok { |
| log.Fatal("Symmetric eigendecomposition failed") |
| } |
| fmt.Printf("Eigenvalues of A:\n%1.3f\n\n", eigsym.Values(nil)) |
| |
| var ev mat.Dense |
| eigsym.VectorsTo(&ev) |
| fmt.Printf("Eigenvectors of A:\n%1.3f\n\n", mat.Formatted(&ev)) |
| |
| // Output: |
| // A = ⎡ 7 0.5⎤ |
| // ⎣0.5 1⎦ |
| // |
| // Eigenvalues of A: |
| // [0.959 7.041] |
| // |
| // Eigenvectors of A: |
| // ⎡ 0.082 -0.997⎤ |
| // ⎣-0.997 -0.082⎦ |
| // |
| } |
| |
| func ExampleEigen() { |
| a := mat.NewDense(2, 2, []float64{ |
| 1, -1, |
| 1, 1, |
| }) |
| fmt.Printf("A = %v\n\n", mat.Formatted(a, mat.Prefix(" "))) |
| |
| var eig mat.Eigen |
| ok := eig.Factorize(a, mat.EigenLeft) |
| if !ok { |
| log.Fatal("Eigendecomposition failed") |
| } |
| fmt.Printf("Eigenvalues of A:\n%v\n", eig.Values(nil)) |
| |
| // Output: |
| // A = ⎡ 1 -1⎤ |
| // ⎣ 1 1⎦ |
| // |
| // Eigenvalues of A: |
| // [(1+1i) (1-1i)] |
| } |