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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2015, 00:03   #21
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

eps и x передаются как параметры в функцию,да я вижу что что-то не то,я не понимаю,что за деления

Ребята, ну вот оставила в таком виде:
Код:
double func2(double eps,double x)
{
	int n2=1; //переменная n в соответсвии с формулой

	double Sum2=0.0,a2=1.0,b2=1.0,c2=1.0,y; //sum для хранения суммы ряда, а- один член ряда
	double result2=0.0;
	do
	  {  //цикл с постусловием

		  for(int i=1;i<=(2*n2)-1;i++)
			{
				if(i%2!=0)
				{
					
					b2*=i;
				}
			}
			cout<<endl;
			for(int i=1;i<=(2*n2)*(2*n2);i++)
			{
				if(i%2==0)
				{
					
					c2*=i;
				}
			}

			a2=(b2/c2)*(1/(pow(x,2*n2)));
			Sum2+=a2;
			n2++;
	  
	  
	  } 
	  while (abs(a2)>eps);

	  result2=log(2*x)-Sum2;

return result2;
}
При eps=0.1 и х=2 результат= 1,35. А если вручную считать то результат= 1,32. Погрешность не очень большая,но с увеличением параметров она ведь будет увеличиваться...

Последний раз редактировалось Stilet; 08.11.2015 в 08:28.
Вероника99 вне форума Ответить с цитированием
Старый 08.11.2015, 00:50   #22
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
eps и x передаются как параметры в функцию,да я вижу что что-то не то,я не понимаю,что за деления
Вероника. Наверное не только я устал от тебя. Ты сама от себя устала.
Большими буквами напечатать? КОНКРЕТНО, - УСЛОВИЕ ВЫХОДА ИЗ ЦИКЛА! БЕСКОНЕЧНОСТЬ В КОМПЕ НЕ ПРЕДУСМОТРЕНА!!!!!!!!! хотя-бы потому, что его ресурсов не хватит. Да и времени у тебы не бесконечность. Пока он будет решать твою задачку, в твоей постанвке, состарится и умрёт не одно поколение людей.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 08.11.2015 в 00:55.
Smitt&Wesson вне форума Ответить с цитированием
Старый 08.11.2015, 01:00   #23
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Извините,что я так туплю,но не понимаю,что с условием выхода из цикла. У меня оно считает просто до того момента,пока член ряда меньше точности...
Вероника99 вне форума Ответить с цитированием
Старый 08.11.2015, 01:04   #24
temaps
Форумчанин
 
Регистрация: 15.05.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
Ребята, ну вот оставила в таком виде:
Код:
double func2(double eps,double x)
{
	int n2=1; //переменная n в соответсвии с формулой

	double Sum2=0.0,a2=1.0,b2=1.0,c2=1.0,y; //sum для хранения суммы ряда, а- один член ряда
	double result2=0.0;
	do
	  {  //цикл с постусловием

		  for(int i=1;i<=(2*n2)-1;i++)
			{
				if(i%2!=0)
				{
					
					b2*=i;
				}
			}
			cout<<endl;
			for(int i=1;i<=(2*n2)*(2*n2);i++)
			{
				if(i%2==0)
				{
					
					c2*=i;
				}
			}

			a2=(b2/c2)*(1/(pow(x,2*n2)));
			Sum2+=a2;
			n2++;
	  
	  
	  } 
	  while (abs(a2)>eps);

	  result2=log(2*x)-Sum2;

return result2;
}
При eps=0.1 и х=2 результат= 1,35. А если вручную считать то результат= 1,32. Погрешность не очень большая,но с увеличением параметров она ведь будет увеличиваться...
Это неверно. В идеале использовать рекурсию, но если нужно цикл, тогда нужно посчитать числитель и знаменатель точно по формуле.
Код:
double func2(double eps,double x)
{
	int n2=1; //переменная n в соответсвии с формулой

	double Sum2=0.0,a2=1.0,b2=1.0,c2=1.0,y; //sum для хранения суммы ряда, а- один член ряда
	double result2=0.0;
	do
	  {  //цикл с постусловием

		  for(int i=1;i<=(2*n2)-1;i++)
			{
				if(i%2!=0)
				{
					
					b2*=i;
				}
			}
			cout<<endl;
			for(int i=1;i<=(2*n2);i++)//Исправил тут
			{
				if(i%2==0)
				{
					
					c2*=i;
				}
			}
c2*=(2*n2);//Исправил тут
			a2=(b2/c2)*(1/(pow(x,2*n2)));
			Sum2+=a2;
			n2++;
	  
	  
	  } 
	  while (abs(a2)>eps);

	  result2=log(2*x)-Sum2;

return result2;
}
Исправленные строки выделил. И циклы вхолостую много тарахтят. Лучше вместо i++ использовать i=i+2 тогда и условие проверки чётности не понадобится
temaps вне форума Ответить с цитированием
Старый 08.11.2015, 01:13   #25
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Ну наконец-то, правильно посчитало,большое спасибо. Всем спасибо за отзывчивость
P.S. не хотела никого злить,вы уж простите)
Вероника99 вне форума Ответить с цитированием
Старый 08.11.2015, 01:18   #26
temaps
Форумчанин
 
Регистрация: 15.05.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
Извините,что я так туплю,но не понимаю,что с условием выхода из цикла. У меня оно считает просто до того момента,пока член ряда меньше точности...
Всё верно. Не слушай Smitt&Wesson. Он не в теме
temaps вне форума Ответить с цитированием
Старый 08.11.2015, 01:18   #27
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
Ну наконец-то, правильно посчитало,большое спасибо. Всем спасибо за отзывчивость
P.S. не хотела никого злить,вы уж простите)
Не разозлили. Добавил репки челу, который Вам помог. Удачи.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для заданного ряда найти сумму N элементов ряда havapeymaK Помощь студентам 7 18.08.2015 09:18
Не считает количество членов ряда Tatyana64 Помощь студентам 2 06.11.2012 11:14
считает не правильно rapgamer Помощь студентам 3 15.09.2010 14:23
Не правильно считает сумму чисел, которые находятся в файле. TheWanderer Общие вопросы C/C++ 6 17.04.2009 18:43
Найти сумму ряда с точностью e, если дан общий член этого ряда JiLiYa Общие вопросы C/C++ 2 18.02.2009 11:11