![]() |
|
|
![]() |
![]() |
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
![]() Здравствуйте, можно ли вычислить результат работы цикла без использования самого цикла? По какой нибудь формуле?
|
|
|||||
Может быть как-то через прогрессии.
Добавлено через 1 час 1 минуту В принципе я могу вывести подобное. Добавлено через 1 час 2 минуты var x:Number = 0; var x2:Number = 0; var d:Number = 0.9; var m:Number = 10; var j:int = 100; for (var i:int = 0; i < j; i++) { x *= d; x += m; } x2 = x2 * Math.pow(d, j - 1) + d * m * (1 + (d * (1 - Math.pow(d, j - 2))) / (1 - d)) + m; trace(x, x2); Числа немного отличаются. Добавлено через 1 час 7 минут Вот искомая формула, где d = 0.9, m = 10, j - размерность цикла. Добавлено через 1 час 16 минут А если не секрет, то где такое тебе понадобилось?
__________________
Я заклинаю вас действовать иначе. Последний раз редактировалось Bletraut; 29.08.2015 в 19:57. |
|
|||||
Регистрация: Feb 2012
Сообщений: 212
|
Bletraut, Использовал в игре для нахождения максимальной скорости которою может развить транспортное средство с двигателем определенной мощности. В оригинале опытным путём было выбрано 300 итераций для цикла - дальше прирост уже незначительный.
Если не секрет, как Вы вывели формулу? Какой это раздел математики? |
|
|||||
PlutDem, прогрессии. Я не математик и не имею глубоких познаний в математике, поэтому объясню как умею, выводил я следующим образом:
Нужное нам число состоит из арифметической и геометрической прогрессии + исходное число. d - коэффициент умножения, m - коэффициент сложения, a1 - первый член прогрессии (в нашем случае 0), an - n-ый член прогрессии. Чтобы найти an для геометрической прогрессии воспользуемся формулой an = a1*d^(n-1), где n - номер нужного нам члена геометрической прогрессии. В нашем случае прогрессия смешанная, чтобы увидеть закономерность, выведем формулу нескольких первых членов прогрессии. 1) a1 = 0 2) a2 = a1*d + m 3) a3 = a2*d + m = (a1*d + m)*d + m = a1*d^2 + d*m + m 4) a4 = a3*d + m = (a1*d^2 + d*m + m)*d = a1*d^3 + d^2*m + d*m + m Далее разберем конец формулы, очевидно, что ничего не меняется, поэтому мы можем просто записать +m Теперь самое интересное, рассмотрим середину. Последовательность трудно заметить, поэтому выведем пятый член прогрессии: , внимательно посмотрим на пятое выражение , вынесем d*m за скобки и получим . Можно заметить, что в скобках у нас получилась сумма членов геометрической прогрессии к которой прибавляется 1. Сумма членов геометрической прогрессии (k1, k2, k3, ...kn) вычисляется по формуле S = (k1*(1 - q^n))/ (1-q), для нашего случая k1 = q = d. Так же заметим, что степень нашей последовательности начинается n - 2. Поэтому середину формулы мы запишем как В итоге вся формула будет иметь вид
__________________
Я заклинаю вас действовать иначе. Последний раз редактировалось Bletraut; 31.08.2015 в 16:26. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:36. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|