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

Расчет значения экспоненты - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.89
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
03.08.2012, 21:54     Расчет значения экспоненты #1
Есть задача, где требуется вычислить мат. константу е, по формуле е = 1 + 1/0! + 1/1! + 1/2! + 1/3! + ..., и тут в форуме я нашел что-то похожее на ответ:
C++
1
2
3
4
5
6
7
8
9
10
 int e;
for(int i=0; i<100; i++)
{
int a
for(a=0; a<i; a++)
{
a*=a;
}
e+=1/a;
}
но у меня возник вопрос: почему цикл останавливается на значений 100? является ли это пределом, когда цикл останавливается или нет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,036
03.08.2012, 22:02     Расчет значения экспоненты #2
Ответ кроется во 2-ой строке. Там указано 100. Как только i станет равно 100 - цикл прервётся.

Добавлено через 1 минуту
Цитата Сообщение от Kuanish Посмотреть сообщение
Есть задача, где требуется вычислить мат. константу е, по формуле е = 1 + 1/0! + 1/1! + 1/2! + 1/3! +
А чего сложного в ней? Сами б написали, а не рылись в исходниках.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
03.08.2012, 22:04     Расчет значения экспоненты #3
Цитата Сообщение от Kuanish Посмотреть сообщение
е = 1 + 1/0! + 1/1! + 1/2! + 1/3! + ...
Это бесконечный ряд, а значит когда заканчивать цикл выбирать вам в зависимости какой точности вы хотите добиться.
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
03.08.2012, 23:31  [ТС]     Расчет значения экспоненты #4
Цитата Сообщение от Chelioss Посмотреть сообщение
Это бесконечный ряд, а значит когда заканчивать цикл выбирать вам в зависимости какой точности вы хотите добиться.
спасибо, если это так )
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
03.08.2012, 23:34     Расчет значения экспоненты #5
Но код из первого сообщения делает что-то ужасное и совсем это не экспонента. Выбрось его
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,036
04.08.2012, 01:16     Расчет значения экспоненты #6
grizlik78, +1
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
04.08.2012, 01:25     Расчет значения экспоненты #7
Цитата Сообщение от Kuanish Посмотреть сообщение
константу е, по формуле е = 1 + 1/0! + 1/1!
насколько я помню е=2,71.....
а я только по первым слагаемым 3 насчитал
или
е = 1 + 1/1! + 1/2! + 1/3! .......
или
е = 1/0! + 1/1! + 1/2! + 1/3! .....
но никак не вместе

Добавлено через 4 минуты
Цитата Сообщение от Kuanish Посмотреть сообщение
for(a=0; a<i; a++)
{
a*=a;
}
какой интересный цикл
первая итерация a=0
вторая 1
третья 4
четвертая 25
ты точно факториал ищешь?
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:17  [ТС]     Расчет значения экспоненты #8
Цитата Сообщение от ValeryS Посмотреть сообщение
ты точно факториал ищешь?
тот код, в первом сообщений не мой )
а факториал я так нахожу:
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
#include <iostream>
#include <locale.h>
 
using namespace std;
 
int main()
{   
    setlocale(LC_ALL, "RUS");
 
    int n, summa;
 
    cout << "Введите неотрицательное число: ";
    cin >> n;
 
    summa = n;
 
    if (n >= 1)
    {
        for (int a = 1; a < n; a++)
            summa *= (n - a);
        cout << "Факториал числа " << n << " = " << summa << endl;
    }
    else 
    {
        if (n == 0)
            cout << " n! = 0" << endl;
        else cout << "Вы ввели отрицательное число!" << endl;
    }
 
    system("pause");
    
    return 0;
}
то что я хотел узнать, это: где предел. меня смущала многоточие в конце вот этой формулы: е = 1 + 1/1! + 1/2! + 1/3! + ...
да, извиняюсь за неправильный код в первом сообщений.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
04.08.2012, 18:26     Расчет значения экспоненты #9
Цитата Сообщение от Kuanish Посмотреть сообщение
if (n == 0)
cout << " n! = 0" << endl;
ну а дальше что?
факториал 0 = 1
т.е добавь
summa = 1;
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
04.08.2012, 18:29     Расчет значения экспоненты #10
Цитата Сообщение от Kuanish Посмотреть сообщение
е = 1 + 1/0! + 1/1! + 1/2! + 1/3! + .
- в этой формуле первая единица - лишняя.


А вот и код:

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
#include "iostream.h"
#include "math.h"
 
double exp_(double x,double eps)
{
    double s=1;
    double n=1;
    double a=1;
    while (1)
    {
        a=a*x/n;
        if (fabs(a) <= eps) break;
        s=s+a;
        n++;
    }
    return s;
}
 
int main(int argc, char* argv[])
{
    double x;
    cout << "Enter x ";
    cin >> x;
    cout << "exp(x)=" << exp_(x,1e-14) << endl;
    return 0;
}
Ряд суммируется до тех пор, пока очередной член ряда не станет меньше 10-14
Вычислять факториалы не нужно, ибо это очень нерационально в данной задаче...
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
04.08.2012, 18:33     Расчет значения экспоненты #11
Цитата Сообщение от Kuanish Посмотреть сообщение
for (int a = 1; a < n; a++)
summa *= (n - a);
очень не читабильно(по моему)
приходится искать чему равно summa в начале
гораздо проще (и логичней )
C++
1
2
3
int fact=1; 
for(int i=1; i<=n;i++)
   fact*=i;
проверять нужно будет только на отрицательные значения n
ибо при 0 выдаст 1
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:33  [ТС]     Расчет значения экспоненты #12
Цитата Сообщение от ValeryS Посмотреть сообщение
ну а дальше что?
да я там ошибся, 0! = 1, исправлю
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
04.08.2012, 18:34     Расчет значения экспоненты #13
Цитата Сообщение от Catstail Посмотреть сообщение
- в этой формуле первая единица - лишняя.
или вторая
я ж ему написал
Цитата Сообщение от ValeryS Посмотреть сообщение
насколько я помню е=2,71.....
а я только по первым слагаемым 3 насчитал
или
е = 1 + 1/1! + 1/2! + 1/3! .......
или
е = 1/0! + 1/1! + 1/2! + 1/3! .....
но никак не вместе
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:36  [ТС]     Расчет значения экспоненты #14
Цитата Сообщение от Catstail Посмотреть сообщение
в этой формуле первая единица - лишняя.
формула из книги Дейтлов
Миниатюры
Расчет значения экспоненты  
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
04.08.2012, 18:38     Расчет значения экспоненты #15
Цитата Сообщение от Kuanish Посмотреть сообщение
формула из книги Дейтлов
Там нет члена 1/0!
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:41  [ТС]     Расчет значения экспоненты #16
Цитата Сообщение от Catstail Посмотреть сообщение
Там нет члена 1/0!
посмотрите пост №8
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
04.08.2012, 18:46     Расчет значения экспоненты #17
Цитата Сообщение от Catstail Посмотреть сообщение
while (1)
{
a=a*x/n;
if (fabs(a) <= eps) break;
чеж ты так бесконечные циклы и break-и любишь?
открой для себя do-while
вот твой код
C++
1
2
3
4
5
6
do
    {
        a=a*x/n;
        s=s+a;
        n++;
    }while (fabs(a) > eps);
Добавлено через 1 минуту
Цитата Сообщение от Kuanish Посмотреть сообщение
посмотрите пост №8
посмотрели.....
расчет факториала......
а расчет экспоненты где?
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:49  [ТС]     Расчет значения экспоненты #18
Цитата Сообщение от ValeryS Посмотреть сообщение
а расчет экспоненты где?
еще раз посмотрите, то что написано выше кода на посте №8, я там разве писал что-нибудь про экспоненто?
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
04.08.2012, 19:05     Расчет значения экспоненты #19
Цитата Сообщение от Kuanish Посмотреть сообщение
посмотрите пост №8
- я знаю, что такое экспонента

Цитата Сообщение от ValeryS Посмотреть сообщение
чеж ты так бесконечные циклы и break-и любишь?
открой для себя do-whil
- ты хочешь мне объяснить, что следует любить, а что - нет?
Не трудись... Лучше запусти мой код, и убедись, что он работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2012, 19:50     Расчет значения экспоненты
Еще ссылки по теме:

Вычисление экспоненты C++
Степень отрицательной экспоненты C++
C++ Вычисление экспоненты

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
04.08.2012, 19:50     Расчет значения экспоненты #20
Цитата Сообщение от Catstail Посмотреть сообщение
Лучше запусти мой код, и убедись, что он работает.
запустил
первая же ошибка
#include "iostream.h"
потом не объявлено пространство имен
но это мелочи
вот что дает программа
х=1 2.71828
х=2 7.38906
х=3 20.0855
вопрос:
Что такое х? и чего мы считаем?

Добавлено через 1 минуту
Может это экспонента в степени?
Yandex
Объявления
04.08.2012, 19:50     Расчет значения экспоненты
Ответ Создать тему
Опции темы

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