Определить число членов ряда, необходимое для получения приближенного значения - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание

:Составить программу, которая для каждого значения аргумента

х

от начального

хн

до конечного

хк

с шагом х выполняет следующие действия: 1.Вычисляет значение заданной функции по стандартной программе; 2.Вычисляет приближенное значение заданной функции с помощью разложения в степенной ряд и определяет число членов ряда, необходимое для получения приближенного значения,

абсолютная величина

которого со значением функции, вычисленным с помощью стандартной программы, различается не более, чем на величину

Е

. 3.Печатает значение аргумента, значения функции, вычисленные по стандартной программе, приближенное значение функции и найденное число членов ряда в виде таблицы.

Условия

:Картинка с рядом внизу. Первый столбец - это

х

. Второй столбец -

atan(x)

Третий столбец - значение, которое мы получаем посредством суммирования членов ряда. То есть, приближенное к atan(x) значение. Четвертый столбец - число членов ряда, потребовавшееся, чтобы достичь приближенного к atan(x) значения.

Е

- это максимальная разница между значением atan(x) и приближенным значением.

Е

=0.01 x>1

Проблема

:К сожалению, не получается написать цикл, который должен находиться на месте "закомментированного". То есть, заполнить третий и четвертый столбцы.
#include <stdio.h>
#include <math.h>
main()
{
const double PI = 3.1415;
 
double x,x_first,x_last,x_step,eps,easy_res,compl_res;
int c;
while(1) 
   {
printf("Vvedite x_first,x_last,x_step and eps\n");
if(scanf("%lg%lg%lg%lg", &x_first, &x_last, &x_step, &eps)==EOF)
break;
 
        printf("ЙННННННННННЛННННННННННЛННННННННННЛНННННННННН»\n");
        printf("Ч          Ч          Ч          Ч          Ч\n");
        printf("Ч     x    Ч Y (table)Ч     Y    Ч     N    Ч\n");
        printf("Ч          Ч          Ч          Ч          Ч\n");
        printf("ЧННННННННННЧННННННННННЧННННННННННЧННННННННННЧ\n");
 
for(x = x_first; x <= x_last; x += x_step) 
{
    easy_res = atan(x);
    compl_res = PI/2-1/x;
 
    //c=2;
        //while(fabs(easy_res - compl_res)>=eps)
        //{   if (c%2==0)
        //     compl_res += 1/(2*c-1)*pow(x,2*c-1);
        //     else
        //     compl_res -= 1/(2*c-1)*pow(x,2*c-1);
        //      c+=1;
        //}
 
    printf("Ч          Ч          Ч          Ч          Ч\n");
    printf("Ч%10.5lgЧ%10.5lgЧ%10.5lgЧ%10iЧ\n", x, easy_res, compl_res,c); 
    printf("Ч          Ч          Ч          Ч          Ч\n");
    printf("ЧННННННННННЧННННННННННЧННННННННННЧННННННННННЧ\n");
        
}  
}  
return 0;
}
Ряд: Заранее спасибо.

Решение задачи: «Определить число членов ряда, необходимое для получения приближенного значения»

textual
Листинг программы
    #include <stdio.h>
    #include <math.h>
main()
{
const double PI = 3.14159265;
 
double x,x_first,x_last,x_step,eps,easy_res,compl_res,res;
int c;
while(1) 
   {
a1:printf("Enter x_first,x_last,x_step and eps\n");
if(scanf("%lg%lg%lg%lg", &x_first, &x_last, &x_step, &eps)==EOF)
break;
if (x_first<=1) 
{printf ("x_first must be > 1\n");
goto a1;
}
        printf("ЙННННННННННЛННННННННННЛННННННННННЛНННННННННН»\n");
        printf("Ч          Ч          Ч          Ч          Ч\n");
        printf("Ч     x    Ч Y (table)Ч     Y    Ч     N    Ч\n");
        printf("Ч          Ч          Ч          Ч          Ч\n");
        printf("ЧННННННННННЧННННННННННЧННННННННННЧННННННННННЧ\n");
 
for(x = x_first; x <= x_last; x += x_step) 
{
    easy_res = atan(x);
    res=1/x;
    c=1;
    compl_res = PI/2 - 1/x;
while (fabs(easy_res-compl_res) >= eps)
     {
   if (c%2==0)
      res*=-1/((2*c+1)*x*x);
   else
      res*=+1/((2*c+1)*x*x);
   compl_res+=res;
   c++;
     }
    
    printf("Ч          Ч          Ч          Ч          Ч\n");
    printf("Ч%10.5lgЧ%10.5lgЧ%10.5lgЧ%10iЧ\n", x, easy_res, compl_res,c-=1); 
    printf("Ч          Ч          Ч          Ч          Ч\n");
    printf("ЧННННННННННЧННННННННННЧННННННННННЧННННННННННЧ\n");
        
}  
}  
return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с числами с плавающей точкой и для выполнения операций ввода-вывода
  2. Определяем константу PI, которая равна 3.14159265
  3. Объявляем переменные: x, x_first, x_last, x_step, eps, easy_res, compl_res, res и c
  4. Запускаем бесконечный цикл, который прерывается только при вводе некорректных данных или достижении условия выхода из цикла
  5. Внутри цикла запрашиваем у пользователя значения переменных x_first, x_last, x_step и eps
  6. Проверяем корректность введенных данных: если x_first меньше или равно 1, выводим сообщение об ошибке и переходим к началу цикла
  7. Выводим таблицу с названиями и значениями переменных x, Y (table), Y, N и Ч
  8. Запускаем цикл для вычисления значения приближенного числа π с помощью метода Монте-Карло
  9. Внутри цикла вычисляем приближенное значение π с помощью формулы compl_res = PI/2 - 1/x и сравниваем его с точным значением π, хранящимся в переменной PI
  10. Если приближенное значение π не удовлетворяет условию, то выполняем итерационный процесс, пока не будет достигнуто заданное значение точности eps
  11. В процессе итераций вычисляем значение res, которое используется для корректировки приближенного значения π
  12. Выводим результаты вычислений в таблицу, где показывается значение x, приближенное значение π, точное значение π и количество итераций, выполненных для получения точного значения π
  13. После завершения цикла выводим сообщение об успешном выполнении программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы