Для заданной точности eps написать функцию вычисления приближенного значения e
помогите решить задачу: Для заданной точности eps написать функцию вычисления приближенного значения e^x по формуле 1+x^2/2!+x^3/3!+...x^k/k!
Где |x^k/k!| <= eps
Вот мой код, в цикл уходит, не понимаю, как работать должно вообще, подскажите, в какую сторону копать
#include <iostream>
#include "math.h"
using namespace std;
int fct(int nmb)
{
int f = 1;
for(int i=1; i<=nmb; ++i) f *= i;
return f;
}
double expnt(double x, double eps) {
double res = 1;
for(int k = 2; (abs(pow(x,k) / fct(k))) <= eps; k++)
res += pow(x,k) / fct(k);
return res;
}
int main()
{
double eps, x;
cout << "x= ";
cin >> x;
cout << "eps= ";
cin >> eps;
cout << "e^x ~= " << expnt(x, eps);
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
double expnt(double x, double eps)
{
double sum = 1.0, term = 1.0;
for(int n = 1; abs(term) > eps; ++n) sum += term *= x/n;
return sum;
}
У вас неверная формула + скорее всего факториал переполняется. Вот верная формула для exp(x):
