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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2010, 00:35   #1
L_A_R
 
Регистрация: 03.05.2010
Сообщений: 9
По умолчанию Ряды в С++

Дано действительное число x. Вычислить значение y с помощью стандартной функции и с помощью ряда с точностью 0,0001:
Сам ряд прикреплен Большое спасибо.
Изображения
Тип файла: png Безымянный.png (2.5 Кб, 198 просмотров)
L_A_R вне форума Ответить с цитированием
Старый 30.12.2010, 00:53   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
float x;
//ввод х
float y=0,xx=1,xxx=1,t=1;
int i=0;
while(t>0.0001){
    y+=xx;
    xx*=-x*x/(i+1)/(i+2);
    i+=2;
    t=abs(xxx-xx);
    xxx=xx;
};
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 30.12.2010, 01:02   #3
L_A_R
 
Регистрация: 03.05.2010
Сообщений: 9
По умолчанию

Код:
#include <stdio.h>
#include <math.h>
#define   E  0.0001

     main()
     {
	 float  x,m,
                  y;          
         float  a;         
         int    n;         
         printf ("x=");
         scanf ("%f",&x);
         y=0; a=x; n=0;
         while ( fabs(a) >= E )
	 {    y=y+a;
	     n+=2;
	     a=-x*x/(n+1)/(n+2);


	 }
	 m=cos(x);
	 printf ("y=%f\n",y);
	 printf ("cosx=%f\n",m);
     }
вот что получилось но не сходится

Последний раз редактировалось Stilet; 30.12.2010 в 10:14.
L_A_R вне форума Ответить с цитированием
Старый 30.12.2010, 11:44   #4
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
вот что получилось но не сходится
И не будет сходится по вышеприведенному коду.
1)Первый член ряда не х, а 1
2)в цикле
Код:
 a=-x*x/(n+1)/(n+2);
а надо домножать на -x*x/(2*n+1)/(2*n+2);
3)n должно увеличиваться на единицу
4) делить надо не на (n+1)/(n+2) а на (2*n+1)/(2*n+2);

В итоге
Код:
y=0; a=1; n=0;
         
while ( fabs(a) >= E )
 {    
	           
     y+=a;
     a*=-x*x/(2*n+1)/(2*n+2);
     n++;
	     
}
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ряды alexy Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2010 17:22
Числовые ряды Lepricon69 Паскаль, Turbo Pascal, PascalABC.NET 2 24.12.2010 23:07
Си,ряды acko Помощь студентам 0 21.11.2010 05:46
Ряды в pascal neomax38 Помощь студентам 2 05.10.2010 12:02
Ряды Фибоначчи Anett// Помощь студентам 2 21.05.2010 20:05