Polynomial regression
func regress(x, y, degree) {
var A = Matrix.build(x.len, degree+1, {|i,j|
x[i]**j
})
var B = Matrix.column_vector(y...)
((A.transpose * A)**(-1) * A.transpose * B).transpose[0]
}
func poly(x) {
3*x**2 + 2*x + 1
}
var coeff = regress(
10.of { _ },
10.of { poly(_) },
2
)
say coeff
Output:
[1, 2, 3]