Вычисление бесконечной суммы ( ошибка в коде ) - C (СИ)
Формулировка задачи:
Вычислить бесконечную сумму с точностью е = 0,001. Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем е.
Изначально писал под линуксом. Поэтому и расписывал функцию abs
Помогите пожалуйста!
#include <stdio.h> #include <math.h> #define e 0.001 float abs(float x) { if (x<0) return x*(-1); else return x; } float fact(float x) { if (x == 0) return 1; else if(x == 1) return 1; else return x*fact(x-1); } int main() { float n=0,s=0; float sum=0; float x; printf("Vvedite x: "); scanf ("%f",&x); while (abs(sum)<= e) { s=powf(-1.0,n)*powf(x,2*n)/fact(2*n); sum+=s; n++; getchar(); return 0; }
Решение задачи: «Вычисление бесконечной суммы ( ошибка в коде )»
textual
Листинг программы
#include <math.h> #include <stdio.h> #define e 0.001 double func(double x, double eps) { double aCurr = 1.0; double sum = 0.0; unsigned n = 1; do { sum += aCurr; aCurr *= (-1.0)*x*x/( (2*n-1) * (2*n) ); ++n; } while (abs(aCurr) < eps); return sum + aCurr; } int main() { double sum=0.0; double x; printf("Vvedite x: "); scanf ("%lf",&x); sum = func(x, e); printf("Sum: &lf", sum); }
Объяснение кода листинга программы
- Подключение необходимых библиотек:
<math.h>
и<stdio.h>
. - Определение константы
e
(маленькое число, определяющее погрешность вычислений). - Определение функции
func
, которая принимает два аргумента:x
иeps
(маленькое число, определяющее погрешность вычислений). Внутри функции объявлены следующие переменные:aCurr
(текущий член ряда),sum
(накопитель суммы),n
(номер текущего члена ряда). - Используется цикл
do-while
, который выполняется до тех пор, пока абсолютное значение текущего члена ряда меньше заданной погрешности. - Внутри цикла происходит добавление текущего члена ряда к накопителю суммы и обновление значения текущего члена ряда.
- После выполнения цикла возвращается накопитель суммы, дополненный последним членом ряда.
- В функции
main
объявлены две переменные:sum
(накопитель суммы) иx
(значение, которое необходимо вычислить). - Выводится сообщение с просьбой ввести значение
x
. - Значение
x
считывается с помощью функцииscanf
. - Вызывается функция
func
с введенным значениемx
и заданной погрешностьюe
. - Результат вычисления функции
func
сохраняется в переменнойsum
. - Выводится сообщение с результатом вычисления суммы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д