// Copyright ©2022 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 ExampleQR_solveTo() { // QR factorization can be used for solving linear inverse problems, // as this is a more numerically stable technique than direct // matrix inversion. // // Here, we want to solve: // Ax = b var ( a = mat.NewDense(4, 2, []float64{0, 1, 1, 1, 1, 1, 2, 1}) b = mat.NewDense(4, 1, []float64{1, 0, 2, 1}) x = mat.NewDense(2, 1, nil) ) var qr mat.QR qr.Factorize(a) err := qr.SolveTo(x, false, b) if err != nil { log.Fatalf("could not solve QR: %+v", err) } fmt.Printf("%.3f\n", mat.Formatted(x)) // Output: // ⎡0.000⎤ // ⎣1.000⎦ }