Вычисление суммы бесконечного ряда - C (СИ) (73562)
Формулировка задачи:
Вычислить и вывести на экран значение функции, заданной с помощью ряда Тейлора, с точностью ε. Результат должен содержать значение аргумента, значение функции и количество просуммированных членов ряда.
Честно говоря, в математических формулах не гений=/
Решение задачи: «Вычисление суммы бесконечного ряда»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
int main(void)
{
double x,el,xn,e=1e-8,sum=0;
int n=1,m=1;
printf("x=");
scanf("%lf",&x);
xn=el=x;
do
{
sum+=el;
m=-m;
xn*=x;
el=m*xn/++n;
}while(el<=-e || el>=e);
printf("sum=%.10lf n=%d ln(x+1)=%.10lf\n",sum,n,log(x+1));
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h и math.h
- Объявление переменных:
- x - значение переменной, введенное пользователем
- el - текущее значение члена ряда
- xn - произведение всех членов ряда до текущего
- e - погрешность вычислений (1e-8 - 10^-8)
- sum - сумма членов ряда до текущего
- n - номер текущего члена ряда
- m - коэффициент перед текущим членом ряда
- Ввод значения переменной x с помощью функции scanf
- Инициализация первого члена ряда (x) и его производной (el)
- Бесконечный цикл do-while, выполняющийся до тех пор, пока значение текущего члена ряда (el) не станет меньше -e или больше e
- Внутри цикла:
- Добавление текущего члена ряда к сумме (sum)
- Обновление значения m (поскольку m меняется знак на каждом шаге)
- Умножение xn на текущий член ряда (el)
- Увеличение n на 1
- Обновление значения el с помощью формулы el = -m * xn / n
- Вывод результатов:
- Сумма членов ряда до текущего (sum)
- Номер текущего члена ряда (n)
- Натуральный логарифм (ln) от (x+1) с помощью функции log
- Знак - перед выводом ln(x+1) указывает на ошибку в случае деления на ноль
- Все значения выводятся с точностью до 10 знаков после запятой с помощью спецификатора формата %.10lf