Определить число членов ряда, необходимое для получения приближенного значения - 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, приближенное значение π, точное значение π и количество итераций, выполненных для получения точного значения π
- После завершения цикла выводим сообщение об успешном выполнении программы