Консультация № 182518
14.03.2011, 19:04
0.00 руб.
0 1 1
Уважаемые эксперты помогите написать программу на С++ с использованием функций
При заданной погрешности вычислить реккурентно значение выражения f(x) = exp(x)., формула нахождения членов последовательности u(i) = x^i / i!;

Обсуждение

Неизвестный
14.03.2011, 21:39
общий
это ответ
Здравствуйте, Посетитель - 366768!
Программа.
Код:
#include <iostream>
#include <locale>
#include <cmath>

// Погрешность
const double EPS = 0.0001;

double mexp(double x)
{
if (x < 0)
{
return 1.0 / mexp(-x);
}

double sum = 1;
double cur = 1;
size_t count = 0;
do
{
cur = cur * x / ++count;
sum += cur;
}
while (cur >= EPS);

return sum;
}

/*
*
*/
int main()
{
std::locale::global(std::locale(""));

double x;

std::cout << "Введите x: ";
std::cin >> x;

if (std::cin.fail())
{
std::cerr << "Ошибка ввода!" << std::endl;
return 1;
}

std::cout << "exp(x)=" << std::exp(x) << std::endl
<< "mexp(x)=" << mexp(x) << std::endl;

return 0;
}

Пример работы:
Код:
Введите x: 0
exp(x)=1
mexp(x)=1

Введите x: 1
exp(x)=2.71828
mexp(x)=2.71828

Введите x: -100
exp(x)=3.72008e-44
mexp(x)=3.72008e-44
Форма ответа