Polynomial regression: Difference between revisions
Content added Content deleted
No edit summary |
(→{{header|Go}}: add gonum/matrix example) |
||
Line 628: | Line 628: | ||
=={{header|Go}}== |
=={{header|Go}}== |
||
===Library gonum/matrix=== |
|||
<lang go>package main |
|||
import ( |
|||
"fmt" |
|||
"github.com/gonum/matrix/mat64" |
|||
) |
|||
var ( |
|||
x = []float64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} |
|||
y = []float64{1, 6, 17, 34, 57, 86, 121, 162, 209, 262, 321} |
|||
degree = 2 |
|||
) |
|||
func main() { |
|||
a := Vandermonde(x, 2) |
|||
b := mat64.NewDense(11, 1, y) |
|||
fmt.Printf("%.3f\n", mat64.Formatted(mat64.QR(a).Solve(b))) |
|||
} |
|||
func Vandermonde(a []float64, degree int) *mat64.Dense { |
|||
x := mat64.NewDense(len(a), degree+1, nil) |
|||
for i := range a { |
|||
for j, p := 0, 1.; j <= degree; j, p = j+1, p*a[i] { |
|||
x.Set(i, j, p) |
|||
} |
|||
} |
|||
return x |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
⎡1.000⎤ |
|||
⎢2.000⎥ |
|||
⎣3.000⎦ |
|||
</pre> |
|||
===Library go.matrix=== |
|||
Least squares solution using QR decomposition and package [http://github.com/skelterjohn/go.matrix go.matrix]. |
Least squares solution using QR decomposition and package [http://github.com/skelterjohn/go.matrix go.matrix]. |
||
<lang go>package main |
<lang go>package main |