Вычислить приближенную сумму функциональной последовательности - C (СИ)
Формулировка задачи:
Доброго времени суток! Я новичок в языке Си. Получил задачу вычислить приближенную сумму функциональной последовательности: двумя способами: сумму первых n членов ряда и сумму с точностью до eps (эпсилон) в двух разных функциях. Сделал задачу таким способом, но получил множество ошибок:
Что тут можно исправить, чтобы программа работала? Заранее спасибо за любую помощь!
double Sum1(int n)
{
double rez, p;
int i;
rez = p = 0;
for (i = 1; i <= n; i++)
{
p *= -(1) / (i * i + 1);
rez += p;
}
}
return rez;
double Sum2(double eps)
{
double rez, p;
int i;
rez = p;
i = 1;
while (fabs(p) >= eps)
{
i++;
p *= -(1) / (i * i + 1);
rez += p;
}
}
return rez;
int main()
{
double n,eps;
scanf("%f",&n);
scanf("%f",&eps);
printf("%f", Sum1(n));
printf("%f", Sum2(eps));
return 0;
}Решение задачи: «Вычислить приближенную сумму функциональной последовательности»
textual
Листинг программы
double square(double x) {
return x * x;
}
double member(unsigned long n) {
return (n & 1 ? -1.0 : 1.0) / (square((double)n) + 1.0);
}
double sum1(unsigned long n) {
double result = 0.0;
for (unsigned long i = 1; i <= n; i++) {
result += member(i);
}
return result;
}
double sum2(double eps) {
double result = 0.0;
double m;
for (unsigned long i = 1; (m = member(i)) >= eps; i++) {
result += m;
}
return result;
}
Объяснение кода листинга программы
- В функции square(x) происходит вычисление квадрата числа x.
- В функции member(n) происходит вычисление значения функции для данного числа n.
- В функции sum1(n) происходит вычисление суммы первых n значений функции member(i).
- В функции sum2(eps) происходит вычисление суммы значений функции member(i), пока значение функции member(i) больше или равно eps.