113

Jul 03, 2009 00:51

Решил 113 задачу. Кто догадается, что возвращает функция L - тот молодец.

static Func L(double[] xs, double[] ys) { return x => ys.Select((yi, i) => new {i, yi}) .Aggregate(0d, (soFar, yi) => soFar + yi.yi*l(xs, yi.i, x)); } private static double l(double[] xs, int i, double x) { return xs.Select((xj, j) => new {xj, j}) .Where(j => j.j != i) .Aggregate(1d, (soFar, xj) => (soFar*(x - xj.xj))/(xs[i] - xj.xj)); }
Даже комменты спрячу, хотя отчего-то уверен, что попыток будет очень мало.
UPD: Как я предполагал, попытку предприняла только norniel . И она почти догадалась.
Функция L вернет интерполяционный многочлен Лагранжа для заданного набора точек. Не так и сложно.

извне, ?, projecteuler

Previous post Next post
Up