Си. Задача на вычисление разности между суммой ряда и частичной суммой - C (СИ)
Формулировка задачи:
Что-то не так. Помогите с решением
#include <stdio.h>
#include <locale.h>
#include <math.h>
int main()
{
int n, i;
int Sum; // Sum- сумма ряда
float x, b;
double y; // y-частичная сумма
setlocale(LC_ALL, "Russian"); // Использование русских букв
printf("Введите n-целое\n");
scanf_s("%d", &n);
printf("Введите x-десятичное\n");
scanf_s("%f", &x);
printf("Введите b-десятичное\n");
scanf_s("%f", &b);
y=cos(x);
scanf_s("%f", &y);
while(fabs(Sum-y)<b)
{
while(i=0, i<=n, i++)
{
Sum=pow((-1), n)* ((pow(x, 2*n))/(fact(2*n)));
printf("Sum = %f", Sum);
}
}
return 0;
}
Решение задачи: «Си. Задача на вычисление разности между суммой ряда и частичной суммой»
textual
Листинг программы
int n;
double x, d;
n = 100;
x = 0.8;
d = 0.00001;
double fx = cos(x);
double s, si;
int i;
for (s=0, si = 1, i=1; fabs(s-fx) > d && i < n; i++) {
s += si;
si = -si*x*x / (2*i*(2*i-1));
}
printf("cos(x): %lf, sum = %lf, i: %d\n", fx, s, i);
Объяснение кода листинга программы
- Объявляются переменные:
n,x,d,fx,s,si,i. - Присваиваются значения переменным:
n= 100,x= 0.8,d= 0.00001,fx= cos(0.8). - Инициализируются переменные:
s= 0,si= 1,i= 1. - Запускается цикл, который выполняется до тех пор, пока разница между
sиfxбольшеdиiменьшеn. - В каждой итерации цикла происходит следующее:
sувеличивается наsi.siобновляется значением-si*x*x / (2*i*(2*i-1)).
- После завершения цикла выводится сообщение:
cos(x): %lf, sum = %lf, i: %d\n, где%lf- это форматный спецификатор для вывода с плавающей точкой,fx- значение функции cos(x),s- сумма ряда,i- количество итераций.