06-problem.go 615 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package main
  2. import (
  3. "math"
  4. "math/rand"
  5. "gonum.org/v1/gonum/optimize"
  6. "gonum.org/v1/plot/plotter"
  7. )
  8. func main() {
  9. points := plotter.XYs{}
  10. for i := 0; i < 10; i++ {
  11. points = append(points, plotter.XY{
  12. X: 100 * rand.Float64(),
  13. Y: 100 * rand.Float64(),
  14. })
  15. }
  16. Func := func(x []float64) float64 {
  17. if len(x) != 2 {
  18. panic("illegal x")
  19. }
  20. var sum float64
  21. for _, point := range points {
  22. sum += math.Sqrt(math.Pow(point.X-x[0], 2) + math.Pow(point.Y-x[1], 2))
  23. }
  24. return sum
  25. }
  26. problem := optimize.Problem{
  27. Func: Func,
  28. Grad: nil,
  29. Hess: nil,
  30. Status: nil,
  31. }
  32. _ = problem
  33. }