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

вычисление математической функции exp(x) - C++

Восстановить пароль Регистрация
 
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
14.08.2013, 11:27     вычисление математической функции exp(x) #1
составил алгоритмы:
алг Общ (арг вещ Х, арг цел N, рез вещ S)
нач
| если N = 0
| | то S:=1
| | иначе S:=Общ(X, N-1)*X/N
| все
кон

алг Эксп (арг вещ Х, арг цел N, рез вещ F)
нач
| если N = 0
| | то F:=Общ(X, N)
| | иначе F:=Эксп(X, N-1) + Общ(X, N)
| все
кон

алг
нач
| А:=Эксп(0.5, 16)
| вывод А
кон

....
по этим алгоритмам надо код составить, но у меня в свете плохого владения C++ это не получается (точнее очень и очень тяжко получается, поэтому за помощью и обращаюсь). Задание само такое: составить алгоритм вычисления exp(x) действительного аргумента X с точностью эпсилон и использованием рекурсии. Я знаю, что должно быть три части кода: подсчет факториала, подсчет экспоненты и помимо всего сам Main. И я понимаю, что должно идти разложение через ряд Тэйлора (а точнее Маклорена, но не суть). Помогите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2013, 11:27     вычисление математической функции exp(x)
Посмотрите здесь:

табулирование математической функции в Dev C++ HELP! C++
Вычисление рекурсивным методом значение математической зависимости C++
C++ [C++] Приближенно вычислить интеграл от функции y=exp(-x) в заданном интервале, используя формулу прямоугольников
Вычисление exp с заданной точностью C++
C++ Проверьте пожалуйста правильный ли следующий код: вычисление exp(x) и exp(-x)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
14.08.2013, 11:31     вычисление математической функции exp(x) #2
Цитата Сообщение от nikitosina Посмотреть сообщение
составил алгоритмы:
алг Общ (арг вещ Х, арг цел N, рез вещ S)
нач
| если N = 0
| | то S:=1
| | иначе S:=Общ(X, N-1)*X/N
| все
кон

алг Эксп (арг вещ Х, арг цел N, рез вещ F)
нач
| если N = 0
| | то F:=Общ(X, N)
| | иначе F:=Эксп(X, N-1) + Общ(X, N)
| все
кон

алг
нач
| А:=Эксп(0.5, 16)
| вывод А
кон

....
по этим алгоритмам надо код составить, но у меня в свете плохого владения C++ это не получается (точнее очень и очень тяжко получается, поэтому за помощью и обращаюсь). Задание само такое: составить алгоритм вычисления exp(x) действительного аргумента X с точностью эпсилон и использованием рекурсии. Я знаю, что должно быть три части кода: подсчет факториала, подсчет экспоненты и помимо всего сам Main. И я понимаю, что должно идти разложение через ряд Тэйлора (а точнее Маклорена, но не суть). Помогите, пожалуйста.
Что такое "рез вещ"?
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
14.08.2013, 11:32  [ТС]     вычисление математической функции exp(x) #3
Hugra, вещественный результат
Ch1or
 Аватар для Ch1or
75 / 16 / 1
Регистрация: 03.02.2013
Сообщений: 52
14.08.2013, 11:52     вычисление математической функции exp(x) #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
42
43
44
45
46
47
48
49
//#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
// составил алгоритмы:
//алг Общ (арг вещ Х, арг цел N, рез вещ S)
//нач
//| если N = 0
//| | то S:=1
//| | иначе S:=Общ(X, N-1)*X/N
//| все
//кон
//
//алг Эксп (арг вещ Х, арг цел N, рез вещ F)
//нач
//| если N = 0
//| | то F:=Общ(X, N)
//| | иначе F:=Эксп(X, N-1) + Общ(X, N)
//| все
//кон
//
//алг
//нач
//| А:=Эксп(0.5, 16)
//| вывод А
//кон
 
int Obj (float X,int N)
{
    if (N == 0)
        return 1;
    else
        return Obj(X, N-1)*X/N;
}
 
int Exp (float X, int N)
{
    if(N == 0)
        return Obj(X, N);
    else
        return Exp(X, N-1) + Obj(X, N);
}
 
void main ()
{
    float A = Exp(0.5, 16);
    cout << "A = "<<A<<endl;
}
Вроде работает. После отработки выводит "1".
Вложения
Тип файла: rar console.rar (9.7 Кб, 4 просмотров)
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
14.08.2013, 12:03     вычисление математической функции exp(x) #5
Цитата Сообщение от Ch1or Посмотреть сообщение
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
42
43
44
45
46
47
48
49
//#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
// составил алгоритмы:
//алг Общ (арг вещ Х, арг цел N, рез вещ S)
//нач
//| если N = 0
//| | то S:=1
//| | иначе S:=Общ(X, N-1)*X/N
//| все
//кон
//
//алг Эксп (арг вещ Х, арг цел N, рез вещ F)
//нач
//| если N = 0
//| | то F:=Общ(X, N)
//| | иначе F:=Эксп(X, N-1) + Общ(X, N)
//| все
//кон
//
//алг
//нач
//| А:=Эксп(0.5, 16)
//| вывод А
//кон
 
int Obj (float X,int N)
{
    if (N == 0)
        return 1;
    else
        return Obj(X, N-1)*X/N;
}
 
int Exp (float X, int N)
{
    if(N == 0)
        return Obj(X, N);
    else
        return Exp(X, N-1) + Obj(X, N);
}
 
void main ()
{
    float A = Exp(0.5, 16);
    cout << "A = "<<A<<endl;
}
Вроде работает. После отработки выводит "1".
Возвращаемое значение на float еще изменить.
Yandex
Объявления
14.08.2013, 12:03     вычисление математической функции exp(x)
Ответ Создать тему
Опции темы

Текущее время: 18:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru