Реализация алгоритма на С++ и Ruby

256
15 декабря 2016, 16:16

Здравствуйте.

У меня есть две реализации построения интерполяционного полинома Ньютона, одна на С++ - которая работает, а другая на Ruby - которая ведёт себя некорректно. Помогите разобраться, в чём принципиальная ошибка реализации на Ruby.

  • Ruby http://pastebin.com/DWzBVNbV
  • C++ http://pastebin.com/eBfEV5xY
Answer 1

Помимо уже указанных другим ответчиком повсеместных ошибок о границах циклов:

C++:

y_val[i] = F(j);
j += 1.0 / (n - 1);

Ruby:

table[i] = {x: i/n.to_f, y: f(i/n.to_f)}

Очевидно, считаются совершенно разные вещи.

Answer 2

Возможно итерации лишние делает, там в С часть циклов 0..n, а часть 0..(n-1), например:

for (int k = 0k < ik++)
for k in 0..i do

Когда должно быть:

for k in 0..(i-1do

Там в нескольких местах такое несоответствие.

READ ALSO
Конструктор класса

Конструктор класса

Доброго времени суток

209
Считывание строки

Считывание строки

На вход подается описание бинарного дереваНа листьях (висячих вершинах) этого дерева написаны целые числа (от -10^6 до 10^6)

255