Форум программистов, компьютерный форум CyberForum.ru

Посчитать сумму ряда - C++

Восстановить пароль Регистрация
 
Kristina-93
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 28
09.12.2013, 18:50     Посчитать сумму ряда #1
Ребята, помогите девушке!))) Я не блондинка, но в программировании туплю сильно =( помогите решить такую задачку)

Код
         (x^3)   (x^5)      (x^(2n+1))
S=shx=x+ _____ + _____ + ... + _________
         3! 5!   (2n+1)!
-2<=x<=0,1
n max=40
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 18:50     Посчитать сумму ряда
Посмотрите здесь:

посчитать сумму ряда C++
C++ Посчитать сумму ряда.
C++ Посчитать частичную сумму ряда
Посчитать сумму ряда (arctan) C++
Посчитать сумму ряда C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
09.12.2013, 19:20     Посчитать сумму ряда #2
Я так понимаю, это разложение шинуса в ряд Тейлора?
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
09.12.2013, 19:25     Посчитать сумму ряда #3
Цитата Сообщение от Kristina-93 Посмотреть сообщение
помогите решить такую задачку
Для начала неплохо бы понять, что там именно написано. Вот fishec пытается догадаться... Попробуйте изложить вопрос с помощью редактора формул (под ответом). Если и правда - не блондинка - у вас получится!
Kristina-93
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 28
09.12.2013, 19:49  [ТС]     Посчитать сумму ряда #4
ой простите)

Добавлено через 1 минуту
S=shx=x+(x^3)/3! + (x^5)/5! + (x^(2n+1))/(2n+1)!

-2<=x<=0,1
n max=40
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
09.12.2013, 19:59     Посчитать сумму ряда #5
Как-то так
C
1
2
3
4
for(s=0, t=x, i=0; i<=2*n; i+=2) {
  s += t;
  t *= x*x/(i+2)*(i+3);
}
Это не рабочий код. Набросок. Оформите сами.
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
09.12.2013, 20:18     Посчитать сумму ряда #6
Байт, нужна ли тут проверка, чтобы переполнения не было? при n=40, 81! - большое число)
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
09.12.2013, 20:54     Посчитать сумму ряда #7
Цитата Сообщение от fishec Посмотреть сообщение
нужна ли тут проверка, чтобы переполнения не было? при n=40, 81! - большое число)
По большому счеты вы правы. Но там все время делится. x - невелик. ИМХО, члены там очень быстро станут маленькими. Столь маленькими, что их даже double будет считать нулем. Вот если б я считал факториалы - тогда да! Но это опасное место обходится. Конечно, все это надо доказывать (или проверять). Но интуиция мне подсказывает, что все будет в порядке. Если вам не лень - займитесь более подробным анализом - это интересно!
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
09.12.2013, 21:02     Посчитать сумму ряда #8
Цитата Сообщение от Байт Посмотреть сообщение
По большому счеты вы правы. Но там все время делится. x - невелик. ИМХО, члены там очень быстро станут маленькими.
а вот, кто его знает, х81 то же не маленькое число
доказывать надо
я бы считал в дубле(она вроде до 10300) и как только слагаемое стало шибко маленьким прекратил бы цикл
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
09.12.2013, 21:07     Посчитать сумму ряда #9
Цитата Сообщение от ValeryS Посмотреть сообщение
а вот, кто его знает, х81 то же не маленькое число
При |x| < 2 оно всетки много меньше 81! Легко прикинуть очень грубо, что 281/81! << 2-40
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
09.12.2013, 21:10     Посчитать сумму ряда #10
Цитата Сообщение от Байт Посмотреть сообщение
При |x| < 2
там все таки есть равно
Цитата Сообщение от Kristina-93 Посмотреть сообщение
-2<=x
Цитата Сообщение от Байт Посмотреть сообщение
Легко прикинуть очень грубо,
лихо прикидываешь, я так не могу, научи
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
09.12.2013, 21:25     Посчитать сумму ряда #11
Цитата Сообщение от ValeryS Посмотреть сообщение
там все таки есть равно
Дела не меняет.
Цитата Сообщение от ValeryS Посмотреть сообщение
лихо прикидываешь, я так не могу, научи
Лично для тебя могу дать более "тонкую" оценку
16 = 24 17 > 24 ... 81 > 24
81! > 265*4 = 2260
281 <(намного!) 2260 < 81!
Хочется более точную - формула Стирлинга.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
09.12.2013, 21:30     Посчитать сумму ряда #12
Цитата Сообщение от Байт Посмотреть сообщение
81! > 265*4 = 2260
так вот и итересует как ты факториалы в степень загнал
Цитата Сообщение от Байт Посмотреть сообщение
формула Стирлинга.
посмотрю
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
09.12.2013, 21:42     Посчитать сумму ряда #13
Цитата Сообщение от ValeryS Посмотреть сообщение
как ты факториалы в степень загнал
Цитата Сообщение от Байт Посмотреть сообщение
16 = 24 17 > 24 ... 81 > 24

Не по теме:

(прости, при цитировании верхние индексы сломались)

Запиши эту строчку в 2 столбика. Не лень - запиши все, без многоточия. И оба столбика пермножь. Имея в виду, что ежели a > b, c > d => ac > bd
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
09.12.2013, 22:02     Посчитать сумму ряда #14
нужна ли тут проверка, чтобы переполнения не было?
an = x2n+1/(2n+1)!
an+1 / an = x2/(2n+2)/(2n+3)
Поэтому, если x2/(2n+2)/(2n+3) < 1 ( то есть x2<(2n+2)(2n+3) ) последовательность |an| убывает.
Если |x| <= 2n+2, то x2<=(2n+2)2<(2n+2)(2n+3), |an| убывает.
При |x|<=2 убывает при 2 <= 2n+2 , т.е. при n>=0. Все элементы |an|меньше |a0| = |x|
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
09.12.2013, 22:18     Посчитать сумму ряда #15
Alex5, действительно хороший математический анализ задачи. Но можно это дело немножко развить (если интересно). А именно, выяснить при каких x программа будет считать правильно. Учитывая границы double и вообще всю машинную арифметику. Я совершенно не настаиваю на ответе (и сам его не знаю). Просто если долгими зимними вечерами вам нечем будет заняться - вот одна из проблем. Хотя вы можете выбрать и любую другую, или просто уйти в зимнюю спячку
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
10.12.2013, 14:51     Посчитать сумму ряда #16
Байт, оценим, когда границ double будет достаточно.
sh(x) = ( exp(x) - exp(-x) ) / 2
Если x > 0, то слагаемым exp(-x) можно пренебречь.
exp(x) / 2 < 10308
x < ln(2*10308) = ln(2) + 308 ln(10) = 709.9
Так как sh(-x) = -sh(x), то |x| < 709.9
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2013, 17:25     Посчитать сумму ряда
Еще ссылки по теме:

Посчитать сумму ряда C++
C++ Посчитать сумму ряда, ограничивая число элементов ряда первым элементом, меньшим заданной величины
Посчитать сумму ряда 1-1/3+1/5-1/7+1/9….N C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kristina-93
0 / 0 / 0
Регистрация: 09.12.2013
Сообщений: 28
10.12.2013, 17:25  [ТС]     Посчитать сумму ряда #17
всем большое спасио, но можете ли написать программу полностью?)))
Yandex
Объявления
10.12.2013, 17:25     Посчитать сумму ряда
Ответ Создать тему
Опции темы

Текущее время: 13:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru