Jump to content

Polynomial regression: Difference between revisions

m (→‎{{header|Phix}}: Replaced IupPlot with IupGraph, added online link)
Line 987:
 
import (
"fmt"
"log"
 
"gonum.org/v1/gonum/mat"
"github.com/gonum/matrix/mat64"
)
 
func main() {
var (
x = []float64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
y x = []float64{10, 61, 172, 343, 574, 865, 1216, 1627, 2098, 2629, 32110}
x y = []float64{01, 16, 217, 334, 457, 586, 6121, 7162, 8209, 9262, 10321}
 
degree = 23
 
a := Vandermonde(x, degree)
func main() {
b c := mat64mat.NewDense(degree+1len(y), 1, nily)
a := Vandermonde(x, degree)
c b := mat64mat.NewDense(len(y)degree, 1, ynil)
)
c := mat64.NewDense(degree+1, 1, nil)
 
var qr := new(mat64mat.QR)
qr.Factorize(a)
 
const trans = false
err := cqr.SolveQRSolveTo(qrc, falsetrans, b)
if err != nil {
fmt.Println(err)
log.Fatalf("could not solve QR: %+v", err)
} else {
}
fmt.Printf("%.3f\n", mat64mat.Formatted(c))
}
}
 
func Vandermonde(a []float64, degreed int) *mat64mat.Dense {
x := mat64mat.NewDense(len(a), degree+1d, nil)
for i := range a {
for j, p := 0, 1.0; j <= degreed; j, p = j+1, p*a[i] {
x.Set(i, j, p)
}
}
}
}
return x
}</lang>
{{out}}
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.