Код: Выделить всё
double[] dist1 = { 3000000 };
double[] dist2 = { 6000000 };
SolverContext solver = SolverContext.GetContext();
solver.ClearModel();
Model model = solver.CreateModel();
Decision x = new Decision(Domain.RealNonnegative, null);
x.SetInitialValue(dist1.Sum() / dist2.Sum());
model.AddDecision(x);
Term chisq = Model.Sum(Enumerable.Range(0, dist1.Length).Select(i => Model.Power(x * dist2[i] - dist1[i], 2)).ToArray());
Goal goal = model.AddGoal(null, GoalKind.Minimize, chisq);
Solution s = solver.Solve();
Console.WriteLine($"{goal.ToDouble()}\t{x.GetDouble()}");
< /code>
Ответ должен быть 0,5 для хи-квадрат 0, но вместо этого он дает 97,7 с хи-квадратом 1E14. Я замечаю, если я добавляю дополнительное 0 в Dist1 Подробнее здесь: https://stackoverflow.com/questions/797 ... le-problem
Мобильная версия