Задача 1.8

1. Условие задачи

Даны действительные числа x, e. Вычислить с точностью до e

2. Решение

Оператор задает значение x и точность вычислений e. Сумма рассчитывается в цикле: определяется значение слагаемого

       (-1)k x4k
a = ——————
       (k+1)! (4k+1)

и производится суммирование по формуле S = S + a. Вычисления останавливаются, как только выполнилось условие |a| < e. Результат вычислений S выводится на экран.

3. Алгоритм решения

4. Текст программы

 1:  #include <stdio.h>
 2:  #include <conio.h>
 3:  #include <math.h>
 4:  void main()
 5:  { 
 6:   float s, x, e, a;
 7:   int i, k, f;
 8:   clrscr();
 9:   printf ("\nВведите x, e: \n");
10:   scanf ("%f%f", &x, &e);
11:   s = 1;
12:   k = 1;
13:    do
14:    { 
15:     f = 1;
16:     for (i=2; i<=k+1; i++)
17:       f = f*(float)i;
18:     a = pow(-1.0,(float)k)*pow(x,4.0*(float)k)/(f*(4.0*(float)k+1.0));
19:     printf ("a=%f\n", a);
20:     s = s + a; 
21:     k = k + 1;
22:    } while (fabs(a) > e);
23:   printf("Сумма равна %.3f .\n", s);
24:   printf("\n Нажмите на клавишу Enter. \n");
25:   getch();
26:  }

5. Работа программы

  Введите x, e:
  0.9
  0.001
  a = -0.06561
  a = 0.007972
  a = -0.000905
  Сумма равна 0.941.
  Нажмите на клавишу Enter.

6. Проверка

Вычисления показывают, что программа работает корректно:
   k=0; x=0,9; s=1;
   k=1; x=0,9; s=(-0,9)*(-0,9)*(-0,9)*(-0,9)/(2*5)=-0,06561; |s|>e;
   k=2; x=0,9; s=0,007972; |s|>e;
   k=3; x=0,9; s=-0,0009052; |s|<e;
   s = 1 - 0,06561+ 0,007972 - 0,0009052 = 0,94.

Хостинг от uCoz