Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вычислить бесконечную сумму с заданной точностью, используя рекуррентные зависимости

Богдан Туланов Знаток (421), открыт 1 неделю назад
нужно вычислить бесконечную сумму с заданной точностью, используя рекуррентные зависимости. Вот код, не пойму в чем ошибка, препод не принимает, помогите пожалуйста...

#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;
}
2 ответа
Татьяна Просветленный (29259) 1 неделю назад
Ошибка в коде
Ваш код имеет несколько ошибок, которые могут приводить к неправильным результатам. Основная проблема заключается в вычислении членов ряда. Давайте рассмотрим исправленный код и объясним изменения.

 #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;
}
Похожие вопросы