Рекуррентная формула для функции - C (СИ)
Формулировка задачи:
Здравствуйте, программа выводит неправильное значение, задание было таковым:Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от Хнач до Хконеч с шагом dx и с точностью eps
Мне сказали, что проще это выполнить с помощью рекуррентной формулы, которую мне дали, но результат выводится неверный,не могли бы вы мне помочь?
Вот сам код:
#include<stdio.h>
#include<math.h>
#include<conio.h>
int main()
{
float eps, dx, x, b, sum=0;
int n=1;
printf("\nVvedite eps, dx\n");
scanf("%f%f", &eps, &dx);
for(x>=-1; x<1; x+=dx)
{b=-1;
do{sum+=b; n++; b*=-(x/(n+1));}
while(fabs(b)>eps);
printf("\nx=%g,\t sum=%g", x, sum);}
getch();
return 0;
}Решение задачи: «Рекуррентная формула для функции»
textual
Листинг программы
#include <stdio.h>
#include<math.h>
int main()
{
float sum, x, xn, xk, eps, i, dx, iter, n;
printf("xn= ");
scanf("%f", &xn);
printf("xk= ");
scanf("%f", &xk);
if(xn > xk)
{printf("xn doljno bit < xk\n");
}
printf("dx= ");
scanf("%f", &dx);
printf("x= ");
scanf("%f", &x);
for(i=xn; i<=xk; i+=dx)
{
x=(double)i;
sum=iter=1;
n=1;
do{
iter*=pow(x,n)/n;
sum+=iter;
n++;
}
while(fabs(iter)>eps);
printf("\nx=%g,\t sum=%g", x, sum);
return 0;
}
}
Объяснение кода листинга программы
В этом коде выполняется вычисление суммы ряда Тейлора для функции e^x на заданном интервале [xn, xk] с шагом dx. Пользователю предлагается ввести значения xn, xk, dx, после чего программа вычисляет и выводит значения x и sum. Список действий:
- Объявление переменных:
- sum (сумма ряда)
- x (текущее значение аргумента функции)
- xn (начальное значение аргумента функции для вычисления ряда)
- xk (конечное значение аргумента функции для вычисления ряда)
- eps (маленькое число, используемое для проверки условия выхода из цикла)
- i (применяется в цикле)
- dx (шаг изменения аргумента функции в цикле)
- iter (итерационный номер значения x)
- n (номер члена ряда, который находится в процессе вычисления)
- Вывод сообщения и запрос на ввод значений xn и xk.
- Проверка условия xn > xk и вывод сообщения, если оно не выполняется.
- Ввод значения dx.
- Ввод начального значения x.
- Выполнение цикла от xn до xk с шагом dx.
- Внутри цикла вычисление значения x, итерационного номера iter и суммы ряда sum.
- Вычисление следующего члена ряда и добавление его к сумме.
- Увеличение значения n на единицу.
- Проверка условия выхода из цикла (сравнение абсолютного значения разности текущего и предыдущего членов ряда с eps).
- Если условие не выполняется, то цикл продолжается.
- Если условие выполняется, то выполняется вывод значений x и sum, и программа завершается.