![]() |
|
Модераторы: bsa |
![]()
|
|
| Максим1989 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.3.2011 Репутация: нет Всего: нет |
Добрый день (вечер,ночь, утро) всем! Мне, начинающему новичку, очень нужна подсказка профессионалов по СИ++.
Пытаюсь выполнить лабораторную работу следующего содержания: Используя оператор цикла, найти сумму элементов ряда с точностью ε=10-4, общий член которого A_n=(2^n*n!)/n^n. Код программы, хочу выдумать сам, но мет.указания ставят в тупик: Методические указания 1.При определении суммы членов ряда следует использовать рекуррентную формулу для получения следующего члена ряда 2.При составлении программы считать, что точность достигнута, если A_n<ε/ Надеюсь на совет |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Почитай эту тему.
-------------------- |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Максим1989, а ты точно формулу списал? Проверь-ка, будь так добр.
В числителе произведение двойки в степени n и факториала n или двойка в степени n * n! ? В знаменателе точно n^n? Это сообщение отредактировал(а) kemiisto - 12.4.2011, 23:32 -------------------- |
|||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
В общем тебе дано выражение для общего члена рекуррентной последовательности
A(n) = 2^n * n! / n^n Тебе нужно найти рекуррентную формулу вида A(n) = f(n, A(n-1), A(n-2), ..., A(n-p)), n >= p + 1. Я, честно сказать, не знаю как такие задачи решаются. Вот в обратную сторону... Там есть метод обратной подстановки, а тут... В числителе проблем, вроде как, нет. Константа в степени n и факториал n рекурсивно очень просто выражаются, но вот n ^ n через n-1, n-2, ... Тут я в тупике. Можно попробовать, например, так. A(n) = 2^n * n! / n^n A(n - 1) = 2^(n-1) * (n-1)! / (n-1)^(n-1) Теперь поделим одно на другое и упростим: A(n) / A(n - 1) = 2 * (1 - 1 / n) Тогда A(n) = 2 * (1 - 1 / n) * A(n - 1). Можно быстренько себя проверить (начиная с n = 2):
Вроде, одно и тоже получается. Ну избавились от факториала (для вычисления a_n он не нужен), уже неплохо. Само решение, вроде как
Писал "на коленках" со слипающимися глазами. Но мне не нравится знаменатель, ей богу не нравится. Это сообщение отредактировал(а) kemiisto - 13.4.2011, 00:47 -------------------- |
||||
|
|||||
| Максим1989 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.3.2011 Репутация: нет Всего: нет |
Здравствуй kemiisto. Во-первых: спасибо большое за такой труд! Формула, рассмотренная тобою, совершенно верно понята.
Я даже прикреплю своё задание в формате Word. Задание 12. (Я просто не знаю как на форум формулы в нормальном виде вставляются) У меня, кстати, тоже вначале возникла такая мысль, что нужно избавиться от факториала. Но не осилил, несмотря на то что в задании приведен пример. (Я сфоткал то, на чем остановился и вложил в этот же архив). И самое главное - когда искал подобные примеры в инете, налетел на ... решение своего задания! Но там голый код. А как формулу преобразовыввали непонятно. Еще хочу сказать, что коды на СИ++ написанные тобою, на мой взгляд абсолютно верны, так как результат вычислений при сравнении с тем что я приложил, практически сходится. Присоединённый файл ( Кол-во скачиваний: 7 )
_______.rar 600,49 Kb |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Максим1989, а ты точно такое же решение нашёл по сути.
Вот тут, конечно, A(n) = 2 * (1 - 1 / n) ^ (n - 1) * A(n - 1) Их рекуррентная формула: A(n) = 2 * n * (n - 1) ^ (n - 1) / n ^ n * A(n - 1) упрощается дальше до моей. Делим числитель и знаменатель на n A(n) = 2 * (n - 1) ^ (n - 1) / n ^ (n - 1) * A(n - 1) теперь степени при n - 1 и n одинаковые, переписываем A(n) = 2 * ((n - 1) / n) ^ (n - 1) * A(n - 1) и почленно делим n - 1 на n A(n) = 2 * (1 - 1 / n) ^ (n - 1) * A(n - 1) Ты в в своём решении (от руки) просто до конца не дошёл. 2 * (n + 1)! * n ^ n / ((n + 1)^(n + 1) * n!) = | (n + 1)! = n! * (n + 1) | = 2 * n! * (n + 1) * n ^ n / ((n + 1)^(n + 1) * n!) = | делим числитель и знаменатель на n! | 2 * (n + 1) * n ^ n / (n + 1)^(n + 1) = | делим числитель и знаменатель на (n + 1) | = 2 * n ^ n / (n + 1)^n = | степни одинаковые ... | В реализации разница небольшая. У них С, а ты просил С++. У них float, у меня double. Они, пожалуй, правы, т.к. для точности 10e-4 float достаточно. Это уже привычка у меня просто к double. Добавлено через 30 секунд
Никак, к сожалению. -------------------- |
|||
|
||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: нет Всего: 72 |
![]() Картинкой, вот сервис, например. |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Shaggie, оно, конечно, да. МАЛЕНЬКИЙ нюанс - надо знать TeX.
-------------------- |
|||
|
||||
| Максим1989 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.3.2011 Репутация: нет Всего: нет |
Уважаемый kemiisto! Спасибо огромное!
Ты написал очень много ценной информации. Но чтобы осознать её мне надо время, а сейчас надо бежать на лекции. Я поздним вечером обязательно что-нибудь напишу!!! Это сообщение отредактировал(а) Максим1989 - 14.4.2011, 14:40 |
|||
|
||||
| Максим1989 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.3.2011 Репутация: нет Всего: нет |
Уважемый kemiisto! Вообщем, изучив всё написанное тобой от корки до корки, и, применив на практике, могу сказать следующее: Честь тебе и хвала! Никаких претензий по качеству! Всё безупречно! Ещё раз благодарю!
Shaggie тоже спасибо за подсказку. А то я так бы и мучался с картинками. Это сообщение отредактировал(а) Максим1989 - 14.4.2011, 21:53 |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Максим1989, пожалуйста.
-------------------- |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |