Вычисление функций разложением в ряд Тейлора

rakomakafo

Ефрейтор
Сообщения
9
Реакции
0
1. Напишите программу для вычисления значения функции, заданной с
помощью ряда Тейлора, в точке Х с заданной точностью.
2. В дополнение к результату вычисления вывести, число шагов необходимых
для достижения требуемого результата, а также значение функции в указанной точке
Программу необходимо составить для языка программирования С++.
Вычисление функций разложением в ряд Тейлора

А это мой нерабочий код

Код:
#include <iostream>
#include <conio.h>
#include <math.h>
#include <iomanip>
using namespace std;
long double fact(double N);
int main() {
double x, sum, n, xn, xk, dx, eps, i;
setlocale(LC_ALL, "Russian");
cout << "Введите границы отрезка" << endl;
do {
cout << "Введите х начальное: ";
cin >> xn;
cout << "Введите х конечное: ";
cin >> xk;
if (xn>xk) cout << "Неверно введены границы. Повторите ввод!" << endl;
} while (xn > xk);
cout << "Введите шаг dx: ";
cin >> dx;
cout <<"Введите точность e: ";
cin >> eps;
while (xn <= xk) { //пока х конечное больше х начального будем увеличивать х начальное на шаг dx
x = xn,
sum = 1, //первй элемент
n = 1;// первый элемент уже посчитан
i = 1; // степень (у первого была 0, значит теперь 1
while ((pow(-1, i)* pow(i, 2 * n + 1)) / (2 * n + 1)) > eps) { //пока элемент по модулю больше точности будем продолжать вычисления
sum += ((pow(-1, i)* pow(i, 2 * n + 1)) / (2 * n + 1));// изменяем сумму
i++;// степень
n++;//количество элементов
}
cout.precision(5);
cout<<setw(10) << "x: " << xn << setw(10) << " f(x): " << sum << setw(40) << " количество членов: " << n << endl;
xn += dx;
}
system("pause");
return 0;
}
 
long double fact(double N)
{
if (N < 0) // если отрицательное число
return 0; // возвращаем ноль
if (N == 0) // если ноль,
return 1; // возвращаем факториал от нуля - 1
else // Во всех остальных случаях
return N * fact(N - 1); // делаем рекурсию
}