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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.89
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
#1

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

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

Есть задача, где требуется вычислить мат. константу е, по формуле е = 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2012, 21:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Расчет значения экспоненты (C++):

Расчет значения многочленов и их степень - C++
Уважаемые эксперты, подскажите пожалуйсто, как по ряду Тейлора : 2*х+х3/3+x5/5+...+x2n+1/(2n+1)+... расчитать значение многочленов и их...

расчет значения e^x(x это степень) - C++
есть задача,в котором нужно рассчитать значение e^x. Проблема в том что я даже понятие не имею что это такое это экспоненто в степени x....

Расчет значения функции по введенному значению и графику - C++
Нужна помощь с программой по данному графику.Нужно написать программу для расчета значения функции у по введенному значению х, если задан...

Вычисление экспоненты - C++
Разработать программу, вычисляющую e^x= 1 + x + x^2/2! + x^3/3! +...+ x^n/n! c точностью эпсилон. Подскажите как сделать так чтоб...

Вычисление экспоненты - C++
Разработать программу, вычисляющую e^x= 1 + x + x^2/2! + x^3/3! +...+ x^n/n! c точностью эпсилон.

Вычисление экспоненты - C++
Здравствуйте. Я новичек в сфере программирования и очень нуждаюсь в вашей помощи. Помогите составить программму для вычисления е^x с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BuPy7
Нет ТЗ - давай досвидания
748 / 345 / 30
Регистрация: 01.12.2011
Сообщений: 2,042
03.08.2012, 22:02 #2
Ответ кроется во 2-ой строке. Там указано 100. Как только i станет равно 100 - цикл прервётся.

Добавлено через 1 минуту
Цитата Сообщение от Kuanish Посмотреть сообщение
Есть задача, где требуется вычислить мат. константу е, по формуле е = 1 + 1/0! + 1/1! + 1/2! + 1/3! +
А чего сложного в ней? Сами б написали, а не рылись в исходниках.
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
03.08.2012, 22:04 #3
Цитата Сообщение от Kuanish Посмотреть сообщение
е = 1 + 1/0! + 1/1! + 1/2! + 1/3! + ...
Это бесконечный ряд, а значит когда заканчивать цикл выбирать вам в зависимости какой точности вы хотите добиться.
2
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
03.08.2012, 23:31  [ТС] #4
Цитата Сообщение от Chelioss Посмотреть сообщение
Это бесконечный ряд, а значит когда заканчивать цикл выбирать вам в зависимости какой точности вы хотите добиться.
спасибо, если это так )
0
grizlik78
Эксперт С++
1911 / 1443 / 112
Регистрация: 29.05.2011
Сообщений: 3,000
03.08.2012, 23:34 #5
Но код из первого сообщения делает что-то ужасное и совсем это не экспонента. Выбрось его
0
BuPy7
Нет ТЗ - давай досвидания
748 / 345 / 30
Регистрация: 01.12.2011
Сообщений: 2,042
04.08.2012, 01:16 #6
grizlik78, +1
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
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
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! + ...
да, извиняюсь за неправильный код в первом сообщений.
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
04.08.2012, 18:26 #9
Цитата Сообщение от Kuanish Посмотреть сообщение
if (n == 0)
cout << " n! = 0" << endl;
ну а дальше что?
факториал 0 = 1
т.е добавь
summa = 1;
0
Catstail
Модератор
22615 / 10976 / 1779
Регистрация: 12.02.2012
Сообщений: 18,117
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
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
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
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:33  [ТС] #12
Цитата Сообщение от ValeryS Посмотреть сообщение
ну а дальше что?
да я там ошибся, 0! = 1, исправлю
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,847
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
Kuanish
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 24
04.08.2012, 18:36  [ТС] #14
Цитата Сообщение от Catstail Посмотреть сообщение
в этой формуле первая единица - лишняя.
формула из книги Дейтлов
0
Миниатюры
Расчет значения экспоненты  
Catstail
Модератор
22615 / 10976 / 1779
Регистрация: 12.02.2012
Сообщений: 18,117
04.08.2012, 18:38 #15
Цитата Сообщение от Kuanish Посмотреть сообщение
формула из книги Дейтлов
Там нет члена 1/0!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2012, 18:38
Привет! Вот еще темы с ответами:

Вычисление экспоненты - C++
помогите написать код нахождения значения экспоненты по формуле е=1+1/1!+1/2!+1/3!... На С++ с циклом while,please Добавлено через 1...

Степень отрицательной экспоненты - C++
Нужно возвести отрицательную экспоненту в степень a=(-e)(i+j)/35, i&gt;=0, j&gt;=0. При попытке организовать через pow выдаёт ошибку pow:...

Запись экспоненты по модулю - C++
Здравствуйте! Подскажите пожалуйста как написать экспоненту e в степени, где степень будет модуль |x-y| exp(fabs(x-y)) Не так?Я...

Ряд Тейлора. Разложение экспоненты - C++
Здравствуйте! Нуждаюсь в вашей помощи! Знаю на форуме таких тем около 20 если не больше, но все же! Вычислить значения функции,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.08.2012, 18:38
Ответ Создать тему
Опции темы

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