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

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

Восстановить пароль Регистрация
 
DORE145
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 4
19.11.2012, 23:55     exp(x) возвращает 0 #1
Мне необходимо написать функцию которая возвращает значение функции распределения скоростей Максвелла(вероятность того, что молекула движется с данной скоростью) при получении соответствующих значений скорости, массы молекулы и абсолютной температуры

И вот что у меня получилось:
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

Вопрос в чем ошибка и что делать?
Изображения
 
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mrmaster88
42 / 42 / 3
Регистрация: 13.04.2012
Сообщений: 112
20.11.2012, 01:06     exp(x) возвращает 0 #2
Цитата Сообщение от DORE145 Посмотреть сообщение
Вопрос в чем ошибка и что делать?
какие проверочные значения(m, t0,v)?
Байт
 Аватар для Байт
13940 / 8771 / 1219
Регистрация: 24.12.2010
Сообщений: 15,869
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
Ответ Создать тему
Опции темы

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