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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2012, 17:39   #1
Bags
Пользователь
 
Регистрация: 05.01.2012
Сообщений: 12
По умолчанию Ряды.Вычисление суммы ряда с заданной погрешностью.

Привет ребята!
Есть задание:
Вычисление суммы ряда с заданной погрешностью.
arctanx=x-x^3/3+x^5/5-...+(-1^n)*(x^(2n+1)/(2n+1))...
1. Численно убедиться в справедливости равенства, для чего для
заданного значения х вычислить его левую часть и разложение,
стоящее в правой части.
2. Испытать разложение на сходимость при разных значениях х.

Код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
 
float ArcTang(float x1, int n1);
float ArcTangRek(float xn, int n1, int n2);
int GetN(float x1, float eps);
 
int main(void)
{
   const int N = 100;
   float x, y, eps;
   int n, menu;
   while (1)
{
clrscr();
puts("Choose the action: \n1. Input x and calculate y=arctg(x) on a recurrent parity\n (Iteratonal functon)\n2. Input x and calculate y=arctg(x) on a recurrent parity\n (Recurrent functon)\n3. Input x, e and find out, how many iterations are necessary to execute,\n that the parity was carried out: IY(n)-Y(n+1)I<e\n4. Exit programm");
scanf("%d",&menu);
switch (menu)
{
   case 1:
{
puts("Enter x.");
  scanf("%f", &x);
    y = ArcTang(x, N);
     printf("Result:\ny=%f", y);
   getch();
break;
}
   case 2:
{
puts("Enter x.");
  scanf("%f %f", &x);
    y = ArcTangRek(x, 0, N);
      printf("Result:\ny=%f", y);
   getch();
break;
}
   case 3:
{
puts("Enter x, e through the gap.");
  scanf("%f %f", &x, &eps);
     n = GetN(x, eps);
       printf("Result:\nn=%f", n);
  getch();
break;
}
   case 4:
{
puts("Thanks for using my programm!");
  getch();
return 1;
}
   default:
{
puts("Incorrect input!");
   getch();
break;
}
}
}
}
 
float ArcTang(float x1, int n1)
{
   int i = 0;
   float s = 0, xn = x1;
   while (i < n1)
{
s += xn;
   xn *= xn*xn*(-1)/(2*i+3);
i++;
}
}
 
float ArcTangRek(float xn, int n1, int n2)
{
   if (n1 == n2)
{
   return xn;
}
   else
{
   return xn+ArcTangRek(xn, n1+1, n2);
   xn *= xn*xn*(-1)/(2*n1+3);
}
}
 
 
int GetN(float x1, float eps1)
{
float y1, y2;
   int n1 = 0;
     y1 = ArcTang(x1, 0);
  y2 = ArcTang(x1, 1);
while (fabs(y1-y2)>eps1)
{
  y1 = y2;
    n1++;
  y2 = ArcTang(x1, n1+1);
}
return n1;
}
Не получается нормально сделать указанные пункты, что я делаю не так?
Помогите!
Bags вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опроеделение суммы ряда с заданной погрешностью Dimon278 Помощь студентам 2 06.12.2009 16:56
нахождения суммы ряда с заданной точностью E pinch000 Общие вопросы C/C++ 1 06.11.2009 13:03
задачи на накопление суммы с заданной погрешностью salmanov Общие вопросы C/C++ 2 16.12.2008 18:13