Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/107: Рейтинг темы: голосов - 107, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
1

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

03.08.2012, 21:54. Показов 19848. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть задача, где требуется вычислить мат. константу е, по формуле е = 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? является ли это пределом, когда цикл останавливается или нет?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2012, 21:54
Ответы с готовыми решениями:

Расчет экспоненты числа с помощью ряда
Ребята объясните пожалуйста на не сложном примере как это делается и для чего)

Вычисление значения экспоненты по заданным исходным данным
Здравствуйте. Требуется написать программу вычисления значения экспоненты по заданным исходным...

Расчет среднего значения в колонке ListView с учетом значения в ComboBox
Помогите решить такую задачу.Пользователь заполняет таблицу ListView данными о моторах, включающими...

Расчет значения по формуле
Доброго времени суток! Уважаемые программисты, прошу вашей помощи ибо не понимаю! Задача такова:...

22
Нет ТЗ - давай досвидания
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
03.08.2012, 22:02 2
Ответ кроется во 2-ой строке. Там указано 100. Как только i станет равно 100 - цикл прервётся.

Добавлено через 1 минуту
Цитата Сообщение от Kuanish Посмотреть сообщение
Есть задача, где требуется вычислить мат. константу е, по формуле е = 1 + 1/0! + 1/1! + 1/2! + 1/3! +
А чего сложного в ней? Сами б написали, а не рылись в исходниках.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
03.08.2012, 22:04 3
Цитата Сообщение от Kuanish Посмотреть сообщение
е = 1 + 1/0! + 1/1! + 1/2! + 1/3! + ...
Это бесконечный ряд, а значит когда заканчивать цикл выбирать вам в зависимости какой точности вы хотите добиться.
2
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
03.08.2012, 23:31  [ТС] 4
Цитата Сообщение от Chelioss Посмотреть сообщение
Это бесконечный ряд, а значит когда заканчивать цикл выбирать вам в зависимости какой точности вы хотите добиться.
спасибо, если это так )
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
03.08.2012, 23:34 5
Но код из первого сообщения делает что-то ужасное и совсем это не экспонента. Выбрось его
0
Нет ТЗ - давай досвидания
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
04.08.2012, 01:16 6
grizlik78, +1
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
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
ты точно факториал ищешь?
0
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! + ...
да, извиняюсь за неправильный код в первом сообщений.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
04.08.2012, 18:26 9
Цитата Сообщение от Kuanish Посмотреть сообщение
if (n == 0)
cout << " n! = 0" << endl;
ну а дальше что?
факториал 0 = 1
т.е добавь
summa = 1;
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
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
Вычислять факториалы не нужно, ибо это очень нерационально в данной задаче...
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
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
0
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:33  [ТС] 12
Цитата Сообщение от ValeryS Посмотреть сообщение
ну а дальше что?
да я там ошибся, 0! = 1, исправлю
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
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! .....
но никак не вместе
0
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:36  [ТС] 14
Цитата Сообщение от Catstail Посмотреть сообщение
в этой формуле первая единица - лишняя.
формула из книги Дейтлов
Миниатюры
Расчет значения экспоненты  
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
04.08.2012, 18:38 15
Цитата Сообщение от Kuanish Посмотреть сообщение
формула из книги Дейтлов
Там нет члена 1/0!
0
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:41  [ТС] 16
Цитата Сообщение от Catstail Посмотреть сообщение
Там нет члена 1/0!
посмотрите пост №8
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
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
посмотрели.....
расчет факториала......
а расчет экспоненты где?
0
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:49  [ТС] 18
Цитата Сообщение от ValeryS Посмотреть сообщение
а расчет экспоненты где?
еще раз посмотрите, то что написано выше кода на посте №8, я там разве писал что-нибудь про экспоненто?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
04.08.2012, 19:05 19
Цитата Сообщение от Kuanish Посмотреть сообщение
посмотрите пост №8
- я знаю, что такое экспонента

Цитата Сообщение от ValeryS Посмотреть сообщение
чеж ты так бесконечные циклы и break-и любишь?
открой для себя do-whil
- ты хочешь мне объяснить, что следует любить, а что - нет?
Не трудись... Лучше запусти мой код, и убедись, что он работает.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
04.08.2012, 19:50 20
Цитата Сообщение от Catstail Посмотреть сообщение
Лучше запусти мой код, и убедись, что он работает.
запустил
первая же ошибка
#include "iostream.h"
потом не объявлено пространство имен
но это мелочи
вот что дает программа
х=1 2.71828
х=2 7.38906
х=3 20.0855
вопрос:
Что такое х? и чего мы считаем?

Добавлено через 1 минуту
Может это экспонента в степени?
0
04.08.2012, 19:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2012, 19:50
Помогаю со студенческими работами здесь

Расчет значения функции
Доброго времени суток, помогите пожалуйста написать простую программу исчисления значений функции в...

Расчет значения функции
Задание: программа запрашивает у пользователя значение аргумента функции, указанной в вашем...

Расчёт значения по формуле
Составить программу для расчета значений z1 и z2 (результаты должны совпадать)....

Запрос на расчет значения
Здравствуйте. Не могу решить задачу: Определить Список покупателей с фамилиями и рейтингами,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru