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

Вычисления функции - C++

Восстановить пароль Регистрация
 
landan
7 / 7 / 0
Регистрация: 07.07.2010
Сообщений: 157
25.09.2010, 19:13     Вычисления функции #1
Помогите написать программу.

Задание: оформить в виде программы вычисления функции
e ^ x = 1 + x + x ^ 2 / 2! + x ^ 3 / 3 !+...
и сравнить полученный результат со значением, полученным при использовании стандартной функции EXP (X), для х = 2.3; 8.5.
Как я понял, тут нужно использовать рекурсию и процедуры?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
25.09.2010, 19:22     Вычисления функции #2
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
#include <cstdio>
#include <cmath>
 
using std::printf;
 
#define PRECISION 1e-4
 
//exp(x) = 1 + x + (x^2)/2!+(x^3)/3!....+(x^n)/n!+.....
 
double _exp( const double x ){
    double dVal, dTemp;
    int nStep = 1;
    for( dVal = 1.0, dTemp = 1.0; dTemp >= PRECISION ; ++nStep ){
        dTemp *= x/nStep;
        dVal += dTemp;
    }
    return dVal;
}
 
int main(){
    double x;
    printf( "exp(%f) = %3.10f, prec = %3.10f\n", x = 2.3, _exp( x ), _exp( x) - std::exp( x ) );
    printf( "exp(%f) = %3.10f, prec = %3.10f\n", x = 8.5, _exp( x ), _exp( x) - std::exp( x ) );
    return 0;
}
точность можно увеличить уменьшая PRECISION
landan
7 / 7 / 0
Регистрация: 07.07.2010
Сообщений: 157
25.09.2010, 21:06  [ТС]     Вычисления функции #3
alex_x_x, при выполнении ничего не происходит, копмилятор dev c++
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
25.09.2010, 21:17     Вычисления функции #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
#include <cstdio>
#include <cmath>
 
using std::printf;
 
#define PRECISION 1e-4
 
//exp(x) = 1 + x + (x^2)/2!+(x^3)/3!....+(x^n)/n!+.....
 
double _exp( const double x ){
    double dVal, dTemp;
    int nStep = 1;
    for( dVal = 1.0, dTemp = 1.0; dTemp >= PRECISION ; ++nStep ){
        dTemp *= x/nStep;
        dVal += dTemp;
    }
    return dVal;
}
 
int main(){
    double x = 2.3;
    printf( "exp(%f) = %3.10f, prec = %3.10f\n", x, _exp( x ), _exp( x) - std::exp( x ) );
    x = 8.5;
    printf( "exp(%f) = %3.10f, prec = %3.10f\n", x, _exp( x ), _exp( x) - std::exp( x ) );
    system("pause");
    return 0;
}
gcc вроде должен компилировать

http://codepad.org/Gs68wVQ1
landan
7 / 7 / 0
Регистрация: 07.07.2010
Сообщений: 157
04.10.2010, 15:30  [ТС]     Вычисления функции #5
как сделать это задание при помощи рекурсии?
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
04.10.2010, 15:32     Вычисления функции #6
а это она и есть
landan
7 / 7 / 0
Регистрация: 07.07.2010
Сообщений: 157
04.10.2010, 16:03  [ТС]     Вычисления функции #7
тогда можно другим способом, используя функции?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.10.2010, 16:22     Вычисления функции #8
KuKu, Интересно, где тут углядели рекурсию...
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.10.2010, 17:10     Вычисления функции #9
silent_1991,
Цитата Сообщение от KuKu Посмотреть сообщение
а это она и есть
Я вот об этом.
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
04.10.2010, 17:18     Вычисления функции #10
dTemp *= x/nStep;
вуаля.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.10.2010, 17:19     Вычисления функции #11
KuKu, Ага. А теперь в гугл, дабы узнать что такое рекурсия.
Рекурсия
В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия), например, функция A вызывает функцию B, а функция B — функцию A. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
04.10.2010, 17:24     Вычисления функции #12
Реку́рсия — метод определения класса объектов или методов предварительным заданием одного или нескольких (обычно простых) его базовых случаев или методов, а затем заданием на их основе правила построения определяемого класса или метода, ссылающегося прямо или косвенно на эти базовые случаи.
- википедия. Не вижу противоречий: задание начальных значений и правила.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.10.2010, 17:25     Вычисления функции #13
KuKu, Вообщем, это сомнительно можно назвать рекурсией. А точнее все же нельзя. В таком случае.

C++
1
2
3
4
5
int a=5;
for(int i=1, j=1; i<n, j<n; ++i,++j)
{
     a*=i*j;
}
Тоже рекурсия?
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
04.10.2010, 17:27     Вычисления функции #14
Рекурсия - это понятие вообще, а не только програмированния. Но тут возможно вы правы, что надо именно это.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.10.2010, 17:27     Вычисления функции #15
KuKu,
Или, если по этому определению, где ссылка (прямо или косвенно) на базовый случай (в данном случае на саму функцию)?
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
04.10.2010, 17:29     Вычисления функции #16
Цитата Сообщение от Lavroff Посмотреть сообщение
KuKu, Эм... Вы тут видите, чтобы функция вызывала сама себя? Или другая функция вызывала ее n раз?
Я вижу вывод новых значений из старых.

Добавлено через 1 минуту
KuKu,
Или, если по этому определению, где ссылка (прямо или косвенно) на базовый случай (в данном случае на саму функцию)?
n+1-ый член ссылается на n-ый - это косвенная ссылка(рано или поздно до первого доссылается).

Ладно-ладно...говорю может тут и надо то, о чем вы говорите
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.10.2010, 17:35     Вычисления функции #17
Думаю, ТС имел ввиду далеко не математическую рекурсию, а именно рекурсию в программировании - т.е. вызов функцией прямо или косвенно самой себя.

Добавлено через 3 минуты

Не по теме:

KuKu,
Только не говорите, пожалуйста, что это я хочу блеснуть знаниями из википедии. Я и задолго до неё знал о существовании математической рекурсии))) Не в обиду.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2010, 20:31     Вычисления функции
Еще ссылки по теме:

C++ Составить программу вычисления функции
Функции для вычисления факториала C++
C++ Написать программу вычисления функции

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

Или воспользуйтесь поиском по форуму:
landan
7 / 7 / 0
Регистрация: 07.07.2010
Сообщений: 157
04.10.2010, 20:31  [ТС]     Вычисления функции #18
так можно по другому как-то написать? без рекурсии.
Yandex
Объявления
04.10.2010, 20:31     Вычисления функции
Ответ Создать тему
Опции темы

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