Рекуррентное соотношение - C (СИ)
Формулировка задачи:
Есть задача:
Для динамического одномерного массива X из N (0<N≤20) элементов
составить алгоритм и программу (консольное приложение на Си)
нахождения суммы ряда с заданной точностью E (0<E<0.1) для
каждого из элементов X. Использовать рекуррентные
соотношения при вычислении очередного члена ряда.
Возникли проблемы при вычислении рекуррентной формулы( конкретно при делении i члена ряда на i-1). Саму программу уже написал. Прощу помощи.
Ряд:
Решение задачи: «Рекуррентное соотношение»
textual
Листинг программы
#include<stdio.h>
#include<math.h>
double sum(double x,double eps);
int main(void)
{
double x=0.5,eps=0.001;
printf("%lf\n",sum(x,eps));
return 0;
}
double sum(double x,double eps)
{
int i=4;
double s=x,t=x;
while(fabs(t)>=eps)
{
t=-t*(i-1)/(i+4)*x;
i+=4;
s+=t;
}
return s;
}
Объяснение кода листинга программы
В данном коде решается задача численного интегрирования с использованием метода прямоугольников. Список действий:
- В функции main() создаются переменные x=0.5 и eps=0.001, которые передаются в функцию sum().
- Результат вычисления функции sum() выводится на экран.
- В функции sum() переменной i присваивается значение 4, а переменным s и t присваивается начальное значение x.
- В цикле while выполняется следующие действия: a. Переменная t вычисляется по формуле t = -t(i-1)/(i+4)x. b. Значение переменной i увеличивается на 4. c. Значение переменной s увеличивается на значение переменной t.
- Цикл выполняется до тех пор, пока значение переменной t не станет меньше или равным eps.
- Возвращается значение переменной s. Количество действий в цикле while зависит от значения переменной i, которое меняется от 4 до 16.