С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
#1

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

13.08.2013, 13:40. Просмотров 2367. Ответов 13
Метки нет (Все метки)

вот однозначное задание: "программа должна вычислять значение функции 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2013, 13:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос как добавить точность эпсилон (C++):

Как задать точность? - C++
Как задать точность для вычисления суммы ряда, равную 10-4?

Не могу понять суть эпсилон (точности) для разложения в ряд Тейлора, как её описать? - C++
Вот задания про ряды Тейлора например,никак не может доехать суть эпсилон(точности),и как её описать в С++,обыясните плиз...(На примере...

Как задать максимальную точность? - C++
E - это точность в программе(её я задаю сам). Вопрос: как задать максимальную точность? #include &lt;iostream&gt; #include &lt;stdio.h&gt; ...

Как рассчитать точность после запятой? - C++
Здравствуйте, есть ряд чисел, подчиняющихся формуле A=cos(2k-1)*X/(2k-1)^2. Меня просят найти сумму этих чисел с определенным условием: мне...

Почему точность Double такая же как у Float ? - C++
Вначале столкнулся с проблемой float: time=65536.0f; (можно и больше число указать) time+=0.003; Тут time не меняетя! Оно меняется,...

Как задать точность округления в среде разработки? - C++
Недавно столкнулся с тем, что любая переменная вещественного типа при инициализации и выводе этой же переменной на экран отображается лишь...

13
nonedark2008
934 / 673 / 148
Регистрация: 28.07.2012
Сообщений: 1,838
13.08.2013, 13:46 #2
Цитата Сообщение от nikitosina Посмотреть сообщение
result = exp(x);
А где тобой написанная функция exp???
0
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 13:50  [ТС] #3
nonedark2008, а она не программно определенная разве? ее еще и самому устанавливать надо? если так, то (как я понимаю), нужно записать
C++
1
const double e = 2.718281828182818281828
?
0
nonedark2008
934 / 673 / 148
Регистрация: 28.07.2012
Сообщений: 1,838
13.08.2013, 13:56 #4
Цитата Сообщение от nikitosina Посмотреть сообщение
программа должна вычислять значение функции exp(x) действительного аргумента Х с использованием рекурсии
Твоя программа должна ВЫЧИСЛЯТЬ значение экспоненты с использованием РЕКУРСИИ. Так что - ты не прав.
0
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 14:00  [ТС] #5
nonedark2008, Хорошо, я не буду спорить, потому что я только начинаю в C++ работать. Но может быть вы тогда подскажете, как же сделать правильно? Как выполнить задание?
...
и вот еще какой момент: преподаватель попался похоже не ах-ти какой, потому что это ОН мне сказал, что должно идти возведение в степень экспоненты с точностью "эпсилон".
...
в общем я запутался, помогите распутаться(
0
nonedark2008
934 / 673 / 148
Регистрация: 28.07.2012
Сообщений: 1,838
13.08.2013, 14:05 #6
nikitosina, я немного не то написал. Ты сам должен написать функцию exp(x), в которой будет возводиться e в степень x. И обычно это делается через разложение в ряд Тейлора, вычисление которого тебе нужно сделать через рекурсию. А достижение необходимой точности определяется путем сравнения текущего значения, вычисленного с помощью ряда, со следующим значением.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.08.2013, 14:07 #7
Вариант на шарпе. Может пригодится для понимания.
0
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 14:16  [ТС] #8
nonedark2008, Все, я тебя понял =)
Но есть загвоздка: в свете своей неподготовленности и малообразованности в С++ я физически не смогу этого осуществить. А препод, паганка эдакая, отказывается экзамен проставлять, пока я ему долги не закрою! Мне эта программа позарез нужна((( Да еще и блок-схема по ней. Это же что получается, я из-за непонятого задания столько времени потерял.... Слушай, nonedark2008, сможешь выручить? Может ты знаешь как это задание выполнить? А я за тебя перед богом Рандомом и богиней Кармой слово замолвлю!

Добавлено через 3 минуты
Tulosba, Си-шарп у нас не приветствуется, нам пытаются любовь к Си++ привить...
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.08.2013, 14:16 #9
Цитата Сообщение от nikitosina Посмотреть сообщение
Си-шарп у нас не приветствуется,
дело не в языке, дело в алгоритме.
0
nikitosina
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 17
13.08.2013, 14:18  [ТС] #10
Tulosba, мои знания настолько малы, что я даже не знаю, как операторы заменить, да и сам алгоритм мне не особо понятен (я про ваш на шарпе)
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.08.2013, 14:21 #11
nikitosina, тогда пользуйтесь поиском
1. Разложение экспоненты в ряд тейлора. Цикл в цикле
2. Ряд Тейлора. Разложение экспоненты
3. Вычисление экспоненты
4. Вычисление экспоненты
0
nonedark2008
934 / 673 / 148
Регистрация: 28.07.2012
Сообщений: 1,838
13.08.2013, 14:41 #12
nikitosina, как истинный программист, патриот и демократ я ничего делять не буду. Почитай это. но тут без рекурсии. Если ты хочешь сразу получить решение, которое тебе нужно - обращайся в раздел фриланса, там тебе за денюшку все сделают. А в этом разделе готовые решения дают либо новички, либо если оно уже валяется в закромах, либо если задача действительно интересная.
Твоя задача точно не третий пункт, да и на остальные надеяться не следует.
1
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;
}
Просто выдает то результат программа не в виде значения экспоненты, а вообще окалесицу какую-то
0
nonedark2008
934 / 673 / 148
Регистрация: 28.07.2012
Сообщений: 1,838
13.08.2013, 15:17 #14
nikitosina, это не то. Тут вычисляется экспонента с заданной точностью, а затем она возводится в нужную степень. А тебе нужно вычислить экспоненту в степени x с заданной точностью. Как я уже говорил ранее, это нужно делать через разложение в ряд Тейлора. Константу 'e' можешь не вычислять, а подставить готовую.
0
13.08.2013, 15:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2013, 15:17
Привет! Вот еще темы с ответами:

Как заранее определить точность для мантиссы (GMP) - C++
Чтобы работать с числами с плавающей точкой в GMP, нужно заранее указать, сколько бит отвести для мантиссы. В доке пишут, что...

Численное интегрирование (метод трапеций). Как гарантировать нужную точность? - C++
#include &lt;cmath&gt; #include &lt;iostream&gt; #define PI 3.1415926535 /*----подинтегральная функция---*/ static double INTEGR(const...

Как повысить точность программы на основе метода половинного деления? - C++
Написана простенькая программа на основе метода половинного деления. Но выдаваемые ею результаты на 0,3 меньше, чем табличные. Задаю eps...

Выводится 25 цифр (после запятой), но только 15 из них верные. Как увеличить точность? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { double a = 2.7182818284590452353602875; ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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