Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2013, 15:49   #1
Solidera
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 14
По умолчанию Рекуррентная формула

Пожалуйста, помогите с заданием:
Разработать алгоритм и составить программу вычисления значений суммы S заданного ряда при различных значениях аргумента Х: во внутреннем цикле для фиксированного значения Х поочередно суммировать члены ряда, пока их абсолютная величина превышает заданную точность eps. Вычисление очередного член ряда осуществлять по рекуррентной формуле. Во внешнем цикле аргумент Х изменяется от 0,5 до 0,75 с шагом 0,05.

Где напортачила?

Код:
float Summ(float x, float eps)
{
	float elem,summ;
	int n=1;
	summ=elem=(x*(3+x))/6;
	while (x*(2*n+1+x)*(2*n+2)*(2*n+3)/(2*n+x)<eps)
	{
		elem*=-(x*(2*n+1+x)*(2*n+2)*(2*n+3))/(2*n+x);
		summ+=elem;
		n++;
	}
	return summ;
}
Изображения
Тип файла: png Безымянный.png (1.8 Кб, 123 просмотров)
Solidera вне форума Ответить с цитированием
Старый 30.11.2013, 17:10   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Где напортачила?
Не пойму где считается факториал? Да и возведение в степень не вижу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2013, 17:20   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,330
По умолчанию

1. Неверна рекурентная формула. У меня получилось так:
an = x*(3+x)/(2*3);
k = -pow(x,2)*(2*n+3+x)/((2*n+1+x)*(2*n+2)*(2*n+3));
2. По условию надо вычисления закончить тогда, когда элемент станет меньше eps.
Таким образом получаем:
Код:
float Summ(float x, float eps)
{
   float elem,summ, k;
   int n = 1;
   summ = elem = x*(3+x)/(2*3);
   while (fabsf(elem) < eps)
   {
     k = -pow(x,2) * (2*n+3+x) / ((2 * n+1+x) * (2 * n+2)  * (2 * n + 3));
     elem* = k;
     summ+ = elem;
     n++;
/* Полезно, в этом месте вставить ограничение по n, например,
   if n > 100
    break;
*/
   }
return summ;
}
fabsf(elem) - получить абсолютное значение числа (модуль). Эту функцию нашел на одном из форумов, но как это на С++ уверенно не скажу.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 30.11.2013, 17:20   #4
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

У вас же в знаменателе (2n+1)! - факториал то есть, а Вы в формуле ставите (2n+x). Ещё не могу найти X в степени 2n-1. Так же не могу найти у вас пресловутую -1 в степени n-1. Может вы как-то преобразовали формулу, я в числовых рядах не очень. Возможно, косяк кроется где-то тут.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 01.12.2013, 15:11   #5
Solidera
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 14
По умолчанию

Спасибо всем, сейчас исправлю и посмотрю. У меня обычно косяки в мелочах, стандарт - перепутать плюс с минусом и т. д.
Solidera вне форума Ответить с цитированием
Старый 01.12.2013, 18:47   #6
Solidera
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
fabsf(elem)
На плюсах просто abs.

Огромное Вам спасибо!
А ограничитель по n там не просто полезен, а жизненно необходим.
Solidera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекуррентная формула dimka123 Паскаль, Turbo Pascal, PascalABC.NET 6 09.11.2013 07:03
Рекуррентная формула topside Помощь студентам 2 29.09.2011 22:07
Рекуррентная формула Максикок Помощь студентам 3 13.10.2010 15:03
Рекуррентная формула Paradoxer Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.06.2009 20:14
рекуррентная формула redisque Паскаль, Turbo Pascal, PascalABC.NET 2 06.05.2009 21:08