Ошибка в коде
Ваш код имеет несколько ошибок, которые могут приводить к неправильным результатам. Основная проблема заключается в вычислении членов ряда. Давайте рассмотрим исправленный код и объясним изменения.
#include
#include
double series_sum(double x, double epsilon) {
double sum = 0.0;
double term = x * cos(M_PI / 3); // первый член ряда для n=1
int n = 1;
while (fabs(term) > epsilon) {
sum += term;
n++;
term = term * x * cos(n * M_PI / 3) / n;
}
return sum;
}
int main() {
double x = 0.5; // Значение x
double epsilon = 1e-6; // Заданная точность
double sum = series_sum(x, epsilon);
double y = -log(1 - 2 * x * cos(M_PI / 3) + x * x);
printf("Значение суммы ряда: %.10lf\n", sum);
printf("Значение функции для проверки: %.10lf\n", y);
return 0;
}
#include <stdio.h>
#include <math.h>
double series_sum(double x, double epsilon) {
double sum = 0.0;
double term = x * cos(M_PI / 3); // первый член ряда для n=1
int n = 1;
while (fabs(term) > epsilon) {
sum += term;
n++;
term = term * x * cos(n * M_PI / 3) / n;
}
return sum;
}
int main() {
double x = 0.5; // Значение x
double epsilon = 1e-6; // Заданная точность
double sum = series_sum(x, epsilon);
double y = -log(1 - 2 * x * cos(M_PI / 3) + x * x);
printf("Значение суммы ряда: %.10lf\n", sum);
printf("Значение функции для проверки: %.10lf\n", y);
return 0;
}