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

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

Войти
Регистрация
Восстановить пароль
 
DORE145
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 4
#1

exp(x) возвращает 0 - C++

19.11.2012, 23:55. Просмотров 471. Ответов 4
Метки нет (Все метки)

Мне необходимо написать функцию которая возвращает значение функции распределения скоростей Максвелла(вероятность того, что молекула движется с данной скоростью) при получении соответствующих значений скорости, массы молекулы и абсолютной температуры

И вот что у меня получилось:
C++
1
2
3
4
5
6
7
8
const double k=1.38e-23;
const double pi=3.14159;
double maxvell(double m,double t0,double v)
{
    double y=4*pi*pow(m/(2*pi*k*t0),1.5)*v*v*exp((-m*v*v)/(2*k*t0));
    
    return y;
};

Но эта функция все время выдает нулевые значения, независимо от полученных значений. После разбора выяснилось что exp((-m*v*v)/(2*k*t0)) всегда равно нулю. Что не поддается (по крайней мере моей) логике. Что бы число в какой то степени равно нулю, не может быть.
Функция должна возвращать значения от 0 до 1, но не только 0 на промежутке скорости от 0 до 1200 м/c

Вопрос в чем ошибка и что делать?
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 23:55     exp(x) возвращает 0
Посмотрите здесь:

C++ error C2065: 'exp' : undeclared identifier
C++ exp(-40)
C++ Вычислить: с=2*exp(x)+2/5*y^x
Вычисление exp с заданной точностью C++
C++ Проверьте пожалуйста правильный ли следующий код: вычисление exp(x) и exp(-x)
Графическое оформление функции Y=A*EXP(X) C++
C++ функция exp
C++ вычисление математической функции exp(x)
exp(x) C++
ВЫчислить exp(-x) разложением в ряд C++
C++ Ряд Тейлора exp(x)
Вычисление exp в ряд Тейлора C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mrmaster88
42 / 42 / 3
Регистрация: 13.04.2012
Сообщений: 112
20.11.2012, 01:06     exp(x) возвращает 0 #2
Цитата Сообщение от DORE145 Посмотреть сообщение
Вопрос в чем ошибка и что делать?
какие проверочные значения(m, t0,v)?
Байт
Эксперт C
 Аватар для Байт
15061 / 9463 / 1385
Регистрация: 24.12.2010
Сообщений: 17,525
20.11.2012, 01:11     exp(x) возвращает 0 #3
DORE145, #include <math.h> стоит?
mrmaster88
42 / 42 / 3
Регистрация: 13.04.2012
Сообщений: 112
20.11.2012, 01:21     exp(x) возвращает 0 #4
Цитата Сообщение от DORE145 Посмотреть сообщение
Вопрос в чем ошибка и что делать?
так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
using namespace std;
 
 
const double k=1.38e-23;
const double pi=3.14159;
double maxvell(double m, double t0, double v)
{
    return 4*pi*pow(m/(2*pi*k*t0),3.0/2.0) * pow(v,2) * exp(-(m*pow(v,2)/2*k*t0));
}
 
int main()
{
    cout<<maxvell((double) 0.003, (double) 0.4, (double) 500.0)<<endl;
    return 0;
}
DORE145
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 4
20.11.2012, 01:32  [ТС]     exp(x) возвращает 0 #5
<cmath> подключен
m от нуля до 1
t0 от нуля до 5000
m и t0 вводятся с клавиатуры
v от нуля до 1200 пробивается циклом с шагом 5

mrmaster88 то что вы написали работает также как и мой код.
Ошибка мною уже найдена. Я по своей неимоверной глупости перепутал различные массы а именно малярную массу, которую вводил с клавиатуры и массу одной молекулы которую собственно и нужно было вводить
Спасибо за помощь и внимание
Yandex
Объявления
20.11.2012, 01:32     exp(x) возвращает 0
Ответ Создать тему
Опции темы

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