Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
tatarin4555
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
#1

Вычисление экспоненты - C++

03.03.2013, 16:14. Просмотров 1770. Ответов 8
Метки нет (Все метки)

Разработать программу, вычисляющую e^x= 1 + x + x^2/2! + x^3/3! +...+ x^n/n! c точностью эпсилон.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2013, 16:14     Вычисление экспоненты
Посмотрите здесь:

Вычисление экспоненты - C++
Разработать программу, вычисляющую e^x= 1 + x + x^2/2! + x^3/3! +...+ x^n/n! c точностью эпсилон. Подскажите как сделать так чтоб...

Вычисление экспоненты - C++
Здравствуйте. Я новичек в сфере программирования и очень нуждаюсь в вашей помощи. Помогите составить программму для вычисления е^x с...

Вычисление экспоненты - C++
помогите написать код нахождения значения экспоненты по формуле е=1+1/1!+1/2!+1/3!... На С++ с циклом while,please Добавлено через 1...

Вычисление экспоненты и странные девятки - C++
Нужно было вычислить экспоненту с заданной точностью Е и вывести с количеством знаков после запятой, равным этому количеству у собственно...

Вычисление экспоненты как суммы ряда - C++
Помогите решить задачку с экспонентой. Само задание во вложении

Степень отрицательной экспоненты - C++
Нужно возвести отрицательную экспоненту в степень a=(-e)(i+j)/35, i>=0, j>=0. При попытке организовать через pow выдаёт ошибку pow:...

Запись экспоненты по модулю - C++
Здравствуйте! Подскажите пожалуйста как написать экспоненту e в степени, где степень будет модуль |x-y| exp(fabs(x-y)) Не так?Я...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
03.03.2013, 20:43     Вычисление экспоненты #2
я бы сделал две функции помимо майна - подсчёта факториала и собсна подсчёта экспоненты, факториал писать нечего, ну а для экспоненты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cmath>
 
double myExp(double x, double epsilon)
{
double result = 1;
double i = 1;
while((exp(x) - result) > epsilon)
{
result += x*i/factorial(i);
i++;
}
return result;
}
...
tatarin4555
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
03.03.2013, 22:39  [ТС]     Вычисление экспоненты #3
я сделал но не работает, можешь скинуть весь код?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
04.03.2013, 21:16     Вычисление экспоненты #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <cmath>
 
using namespace std;
 
double factorial(double n)
{
    double result;
    if(n == 0.0)
    {
        result = 1.0;
        return result;
    }
    result = factorial(n - 1.0) * n;
    return result;
}
 
 
double myExp(double x, double epsilon)
{
    double result = 1;
    double i = 1;
    while((exp(x) - result) > epsilon)
    {
        result += pow(x, i)/factorial(i);
        i++;
    }
    return result;
}
 
 
 
int main()
{
 
    double x = 3.0;
    cout<<"Exp = "<<exp(x);
    cout<<"\nMyExp = "<<myExp(x, 0.01)<<endl;
    cin.get();
    return 0;
}
tatarin4555
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
04.03.2013, 22:35  [ТС]     Вычисление экспоненты #5
1>------ Построение начато: проект: Lab1, Конфигурация: Debug Win32 ------
1> stdafx.cpp
1>d:\documents\visual studio 2010\projects\lab1\lab1\stdafx.h(10): fatal error C1083: Не удается открыть файл включение: stdio.h: No such file or directory
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
вот такую ошибку выдает
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
05.03.2013, 11:27     Вычисление экспоненты #6
создавай пустой проект без stadfx, единственный файл cpp
кстати препод может возбухнуть так что лучше функцию myExp написать так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double myExp(double x, double epsilon)
{
    double result = 1;
    double i = 1;
    double add;
    while(add > epsilon)
    {
        add = pow(x, i)/factorial(i);
        result += add;
        i++;
    }
    return result;
}
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
05.03.2013, 11:53     Вычисление экспоненты #7
Цитата Сообщение от Кудаив Посмотреть сообщение
кстати препод может возбухнуть так что лучше функцию myExp написать так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double myExp(double x, double epsilon)
{
      double result = 1;
      double i = 1;
      double add;
      while(add > epsilon)
      {
            add = pow(x, i)/factorial(i);
            result += add;
            i++;
      }
     return result;
}
а ещё нормальный препод скажет, что функция неоптимальна.
Она зачем то вычисляет степени(pow)
ещё и факториалы в цикле вычисляет...
и к тому же каким-то макаром оперирует числами не int, а double.
Да и вообще она просто ошибочна, т.к. при первой итерации цикла условие add>epsilon не работает должным образом. (впрочем оно никогда и не работает)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double myExp(double x, double epsilon)
{
      double result = 0.0;
      int i = 1;
      double add=1.0;
      while(fabs(add) > epsilon)
      {
            result += add;
            add = add*x/i;        
            i++;
      }
      return result;
}
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
05.03.2013, 12:32     Вычисление экспоненты #8
Kuzia domovenok, спасибо и меня подучили))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2013, 16:34     Вычисление экспоненты
Еще ссылки по теме:

Расчет значения экспоненты - C++
Есть задача, где требуется вычислить мат. константу е, по формуле е = 1 + 1/0! + 1/1! + 1/2! + 1/3! + ..., и тут в форуме я нашел что-то...

Ряд Тейлора. Разложение экспоненты - C++
Здравствуйте! Нуждаюсь в вашей помощи! Знаю на форуме таких тем около 20 если не больше, но все же! Вычислить значения функции,...

как вывести float без экспоненты? - C++
void initialize() { for(int i=0; i&lt;TICK; i++) TickspeedRequired=BaseDuration/((i+13)-0.5); //TickspeedRequired - float //...

Разложение экспоненты в ряд тейлора. Цикл в цикле - C++
Здравствуйте. Сама задача: составить программу для вычисления множества значений функции exp x на интервале −40,1 с шагом 0.5 не...

Косинус от экспоненты в степени х через ряды Тейлора - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #define eps 0.000000000000000000000000000000001 #define PI 3.141592654 using namespace...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
tatarin4555
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
05.03.2013, 16:34  [ТС]     Вычисление экспоненты #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а ещё нормальный препод скажет, что функция неоптимальна.
Она зачем то вычисляет степени(pow)
ещё и факториалы в цикле вычисляет...
и к тому же каким-то макаром оперирует числами не int, а double.
Да и вообще она просто ошибочна, т.к. при первой итерации цикла условие add>epsilon не работает должным образом. (впрочем оно никогда и не работает)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double myExp(double x, double epsilon)
{
      double result = 0.0;
      int i = 1;
      double add=1.0;
      while(fabs(add) > epsilon)
      {
            result += add;
            add = add*x/i;        
            i++;
      }
      return result;
}
А можешь мне с прогой помощь?
Yandex
Объявления
05.03.2013, 16:34     Вычисление экспоненты
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru