Вычислить сумму значений ряда в заданном интервале с заданной точностью - C (СИ)
Формулировка задачи:
Есть программа, вычисляющая сумму значений ряда в заданном интервале с заданной точностью. Вычислительная часть написана верно, но есть вопрос: Почему не выводится конечное значение?
Данные, на которых проверялось:
(Указаны в порядке ввода в программу)
0.1
0.9
0.05
0.001
Листинг программы
- #include <stdio.h> // директивы препроцессора
- #include <conio.h>
- #include <math.h>
- int main()
- {
- float x, s, f, x_nach, x_kon, delta_x, eps, temp; // описание переменных
- int n;
- printf("\nLaboratornaya rabota nomer 3");
- printf("\nVariant nomer 3");
- printf("\nMR-14-1");
- printf("\nBakanov Maxim");
- printf("\n");
- printf("\nVvod ishodnih dannih:"); // ввод исходных данных
- printf("\n");
- printf("\nx_nach=");
- scanf("%f", &x_nach); // начальное значение аргумента
- printf("\nx_kon=");
- scanf("%f", &x_kon); // конечное значение аргумента
- printf("\ndelta_x=");
- scanf("%f", &delta_x); // шаг изменения аргумента
- printf("\neps=");
- scanf("%f", &eps); // точность вычислений
- printf("\nDlya x=%5.3f do %5.3f s shagom %5.3f i tochnostiu %5.3f\n", x_nach, x_kon, delta_x, eps); // эхо-печать
- printf("\n");
- printf("\n x n s f");
- printf("\n--------------------------------------");
- x = x_nach;
- do
- { // внешний цикл - изменение аргумента
- temp=x; // первое слагаемое
- temp*=2;
- s=temp; // начальное значение суммы
- n=1; // количество итераций на каждом шаге
- f=log((1+x)/(1-x)); // точное значение функции
- while(fabs(temp)>eps)
- {
- temp*=(2.0*n-1.0)*(pow(x, (2.0*n+1.0)))/((2.0*n+1.0)*(pow(x, (2.0*n-1.0)))); //Очередное слагаемое
- s+=temp;
- n++;
- }
- printf("\n%5.3f %d %0.6f %1.6f", x, n, s, f);
- x += delta_x; // увеличение аргумента на шаг delta_x
- }
- while (x<=x_kon);
- printf("\n--------------------------------------");
- return(0);
- }
Решение задачи: «Вычислить сумму значений ряда в заданном интервале с заданной точностью»
textual
Листинг программы
- }
- while (fabs(x - x_kon) < EPSILON);
Объяснение кода листинга программы
Код, который вы предоставили, является фрагментом и не содержит полных инструкций или объявлений переменных, необходимых для вычисления суммы значений ряда в заданном интервале с заданной точностью. Однако, основываясь на предоставленном коде, можно сделать следующие выводы:
x
иx_kon
- это две переменные, которые используются в циклеwhile
. Предполагается, чтоx
- это текущее значение переменной, аx_kon
- это конечное значение переменной, к которому стремитсяx
.EPSILON
- это константа, которая представляет собой требуемую точность. В данном контексте она используется в циклеwhile
для проверки условия остановки. Цикл будет выполняться до тех пор, пока разница междуx
иx_kon
не станет меньшеEPSILON
. Однако, без дополнительной информации о том, как именно вычисляется сумма значений ряда и какие значения используются в цикле, сложно дать более подробное объяснение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д