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

как добавить точность эпсилон - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 13:40     как добавить точность эпсилон #1
вот однозначное задание: "программа должна вычислять значение функции exp(x) действительного аргумента Х с использованием рекурсии ис точностью "Эпсилон".
Код возведение экспоненты в произвольную степень я написал, но вот не пойму никак, как же ввести точность эпсилон. При том точность должна устанавливаться пользователем: допустим 3 или 7 или 12 (в общем сколько угодно) знаков после запятой. Помогите, а!
...
вот мой код
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
#include "StdAfx.h"
#include <cmath>
#include <conio.h>
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main(void)
{
double result;
double x = 5;
    cout<<"VVEDITE STEPEN' X:   ";
        cin>>x;
 
result = exp(x);
 
    cout<<"OTVET:   "<<exp(x);
        cout<<endl;
    
getch();
system ("pause");
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
13.08.2013, 13:46     как добавить точность эпсилон #2
Цитата Сообщение от nikitosina Посмотреть сообщение
result = exp(x);
А где тобой написанная функция exp???
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 13:50  [ТС]     как добавить точность эпсилон #3
nonedark2008, а она не программно определенная разве? ее еще и самому устанавливать надо? если так, то (как я понимаю), нужно записать
C++
1
const double e = 2.718281828182818281828
?
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
13.08.2013, 13:56     как добавить точность эпсилон #4
Цитата Сообщение от nikitosina Посмотреть сообщение
программа должна вычислять значение функции exp(x) действительного аргумента Х с использованием рекурсии
Твоя программа должна ВЫЧИСЛЯТЬ значение экспоненты с использованием РЕКУРСИИ. Так что - ты не прав.
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 14:00  [ТС]     как добавить точность эпсилон #5
nonedark2008, Хорошо, я не буду спорить, потому что я только начинаю в C++ работать. Но может быть вы тогда подскажете, как же сделать правильно? Как выполнить задание?
...
и вот еще какой момент: преподаватель попался похоже не ах-ти какой, потому что это ОН мне сказал, что должно идти возведение в степень экспоненты с точностью "эпсилон".
...
в общем я запутался, помогите распутаться(
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
13.08.2013, 14:05     как добавить точность эпсилон #6
nikitosina, я немного не то написал. Ты сам должен написать функцию exp(x), в которой будет возводиться e в степень x. И обычно это делается через разложение в ряд Тейлора, вычисление которого тебе нужно сделать через рекурсию. А достижение необходимой точности определяется путем сравнения текущего значения, вычисленного с помощью ряда, со следующим значением.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.08.2013, 14:07     как добавить точность эпсилон #7
Вариант на шарпе. Может пригодится для понимания.
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 14:16  [ТС]     как добавить точность эпсилон #8
nonedark2008, Все, я тебя понял =)
Но есть загвоздка: в свете своей неподготовленности и малообразованности в С++ я физически не смогу этого осуществить. А препод, паганка эдакая, отказывается экзамен проставлять, пока я ему долги не закрою! Мне эта программа позарез нужна((( Да еще и блок-схема по ней. Это же что получается, я из-за непонятого задания столько времени потерял.... Слушай, nonedark2008, сможешь выручить? Может ты знаешь как это задание выполнить? А я за тебя перед богом Рандомом и богиней Кармой слово замолвлю!

Добавлено через 3 минуты
Tulosba, Си-шарп у нас не приветствуется, нам пытаются любовь к Си++ привить...
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.08.2013, 14:16     как добавить точность эпсилон #9
Цитата Сообщение от nikitosina Посмотреть сообщение
Си-шарп у нас не приветствуется,
дело не в языке, дело в алгоритме.
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 14:18  [ТС]     как добавить точность эпсилон #10
Tulosba, мои знания настолько малы, что я даже не знаю, как операторы заменить, да и сам алгоритм мне не особо понятен (я про ваш на шарпе)
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.08.2013, 14:21     как добавить точность эпсилон #11
nikitosina, тогда пользуйтесь поиском
1. Разложение экспоненты в ряд тейлора. Цикл в цикле
2. Ряд Тейлора. Разложение экспоненты
3. Вычисление экспоненты
4. Вычисление экспоненты
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
13.08.2013, 14:41     как добавить точность эпсилон #12
nikitosina, как истинный программист, патриот и демократ я ничего делять не буду. Почитай это. но тут без рекурсии. Если ты хочешь сразу получить решение, которое тебе нужно - обращайся в раздел фриланса, там тебе за денюшку все сделают. А в этом разделе готовые решения дают либо новички, либо если оно уже валяется в закромах, либо если задача действительно интересная.
Твоя задача точно не третий пункт, да и на остальные надеяться не следует.
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 15:11  [ТС]     как добавить точность эпсилон #13
Tulosba, nonedark2008, вот что я нарыл: мне помогал с этим заданием один хороший человек, но помог не совсем верно... Нужно что-то исправить, но я не могу понять, что именно.
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
#include <iostream>
 
double rpower(double base, int exponent)
{
    if (exponent == 0) return 1.0;
    else if (exponent < 0) return 1.0 / rpower(base, -exponent);
    else return base * rpower(base, exponent - 1);
}
 
double calculate_exp(double eps)
{
    double e = 2.0;
    double t = 1.0;
    double n = 1.0;
    while (t > eps) e += t /= ++n;
    return e;
}
 
int main()
{
    double eps = 0.000000001;
    std::cout << rpower( calculate_exp(eps), -2 );
    return 0;
}
Просто выдает то результат программа не в виде значения экспоненты, а вообще окалесицу какую-то
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2013, 15:17     как добавить точность эпсилон
Еще ссылки по теме:

Как заранее определить точность для мантиссы (GMP) C++
C++ Численное интегрирование (метод трапеций). Как гарантировать нужную точность?
C++ Как повысить точность программы на основе метода половинного деления?

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

Или воспользуйтесь поиском по форуму:
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
13.08.2013, 15:17     как добавить точность эпсилон #14
nikitosina, это не то. Тут вычисляется экспонента с заданной точностью, а затем она возводится в нужную степень. А тебе нужно вычислить экспоненту в степени x с заданной точностью. Как я уже говорил ранее, это нужно делать через разложение в ряд Тейлора. Константу 'e' можешь не вычислять, а подставить готовую.
Yandex
Объявления
13.08.2013, 15:17     как добавить точность эпсилон
Ответ Создать тему
Опции темы

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