Определить число членов ряда, необходимое для получения приближенного значения - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с числами с плавающей точкой и для выполнения операций ввода-вывода
- Определяем константу PI, которая равна 3.14159265
- Объявляем переменные: x, x_first, x_last, x_step, eps, easy_res, compl_res, res и c
- Запускаем бесконечный цикл, который прерывается только при вводе некорректных данных или достижении условия выхода из цикла
- Внутри цикла запрашиваем у пользователя значения переменных x_first, x_last, x_step и eps
- Проверяем корректность введенных данных: если x_first меньше или равно 1, выводим сообщение об ошибке и переходим к началу цикла
- Выводим таблицу с названиями и значениями переменных x, Y (table), Y, N и Ч
- Запускаем цикл для вычисления значения приближенного числа π с помощью метода Монте-Карло
- Внутри цикла вычисляем приближенное значение π с помощью формулы compl_res = PI/2 - 1/x и сравниваем его с точным значением π, хранящимся в переменной PI
- Если приближенное значение π не удовлетворяет условию, то выполняем итерационный процесс, пока не будет достигнуто заданное значение точности eps
- В процессе итераций вычисляем значение res, которое используется для корректировки приближенного значения π
- Выводим результаты вычислений в таблицу, где показывается значение x, приближенное значение π, точное значение π и количество итераций, выполненных для получения точного значения π
- После завершения цикла выводим сообщение об успешном выполнении программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д