Форум сайта python.su
Дано a;a^2/2! ; a^3/4!; a^4/8!;… a^n/(2^n-1)! помогите составить программу которая находит n-ый член.
Офлайн
Нужно найти коэффициент геометрической прогрессии, а потом, начиная с первого члена, умножать очередной член на коэффициент, получая следующий член, пока не дойдёшь до искомого члена.
А чтобы найти коэффициент ГП, надо формулу n-ого члена разделить на формулу n-1-ого члена.
wiki. геометрическая прогрессия
Тут есть всякие быстрые способы нахождения, но они не подойдут, потому что n может быть большим числом и ты просто не вычислишь по времени или по памяти, комп повиснет.
Например, для n = 1000
>>> 2 ** 1000 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376 >>>
Отредактировано py.user.next (Фев. 8, 2018 04:50:45)
Офлайн
> А чтобы найти коэффициент ГП, надо формулу n-ого члена разделить на формулу n-1-ого члена.
Сам то ты это пробовал сделать? И с чего взял что здесь ГП?
>>> (2. ** 3. / math.factorial(4)) / (2. ** 2. / math.factorial(3)) 0.5 >>> (2. ** 4. / math.factorial(8)) / (2. ** 3. / math.factorial(4)) 0.0011904761904761906
Офлайн
Я перепутал немного.
Про геометрическую прогрессию всё убираем, всё остальное используем. То есть формула n-ого поделить на формулу n-1-ого. Мы получим не постоянный коэфициент q, как в ГП, а переменный, зависящий от номера текущего члена последовательности. Потом полученный коэффициент умножаем на первый член, потом результат снова умножаем на коэффициент и так до n-ого шага. Естественно, тут коэффициент численно будет каждый раз новый получаться (так как зависит от переменной), но он будет точно давать каждый следующий член последовательности. При этом факториалы не вычисляются вообще.
Отредактировано py.user.next (Фев. 8, 2018 11:00:02)
Офлайн