Рассчитать геометрическую прогрессию в Ruby - PullRequest
0 голосов
/ 30 декабря 2011

Как лучше всего рассчитать геометрическую прогрессию в Ruby?

Есть ли какие-либо встроенные методы?

Стоит ли использовать какой-нибудь математический камень?

Илия должен реализовать свою маленькую функцию?

Ответы [ 3 ]

2 голосов
/ 30 декабря 2011

Не думаю, что задача достаточно сложна, чтобы ожидать внешнюю библиотеку.

Мне кажется, что это может быть более эффективным, чем ответ ranksrejoined:

def geo_prog a, r, n
    (n - 1).times.inject([a]){|a| a << a.last * r}
end
2 голосов
/ 30 декабря 2011

Предполагая, что вы просто хотите получить значения, а не какой-то дробный дисплей, это так же просто, как создать функцию, которая принимает начальное значение (с разумным значением по умолчанию 1), отношение к прогрессу и, по крайней мере, в моем пример ‒ сколько элементов прогрессивной последовательности вы хотели бы получить обратно.

def geo_prog(a = 1, r, n)
  (0...n).map { |e| a * r ** e }
end
0 голосов
/ 30 декабря 2011

В геометрической прогрессии я предполагаю, что вы имеете в виду последовательность, в общем (заметьте, я использую ^ для представления показателя степени)

a*r^0 + a*r^1 + a*r^2 + ... + a*r^n

реальным примером может быть a = 10 r = 0,5, что даст нам

10 + 5 + 2.5 + 1.25 + ...

Если прогрессия стремится к значению (т. Е. Сходится). Вы можете вычислить значение по очень хорошей формуле

a / (1 - r)

Однако это не всегда так, иногдаможет не сходиться, или вы можете сделать только 10 итераций.В этом случае вы можете использовать.

a*(1 - r^(n+1)) / (1 - r)

В примечании на стороне может быть полезно добавить, что последовательность будет сходиться только тогда, когда r <1 </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...