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

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

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

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

19.11.2012, 23:55. Просмотров 491. Ответов 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++):

Проверьте пожалуйста правильный ли следующий код: вычисление exp(x) и exp(-x) - C++
Всем доброго время суток! Проверьте пожалуйста правильный ли следующий код exp(x): #include <cmath> #include <iostream> ...

exp(x) - C++
При казалось бы не слишком уж больших значениях x, например -1. exp(-1.0) уже возвращает 1. Пробовал заставить вернуть его double вот...

exp(-40) - C++
Всем доброго времени суток, у меня не получается посчитать exp(-40) с необходимой точностью, я знаю как посчитать exp(-5) ...

функция exp - C++
Чем можно заменить функцию exp???у меня степень типа double и вылетает ошибка типо "floatinf point overflow".

Вычислить: с=2*exp(x)+2/5*y^x - C++
Разработать программу для вычисления математического выражения. с=2*exp(x)+2/5*y^x

Ряд Тейлора exp(x) - C++
альфа равно =0.001, x0 = 1, f(x)=ex когда f(2) , найти n ... Помогите пожалуйста решить задачу ребят...! Перепишите задачу на форум. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mrmaster88
42 / 42 / 3
Регистрация: 13.04.2012
Сообщений: 112
20.11.2012, 01:06 #2
Цитата Сообщение от DORE145 Посмотреть сообщение
Вопрос в чем ошибка и что делать?
какие проверочные значения(m, t0,v)?
Байт
Эксперт C
15992 / 10260 / 1537
Регистрация: 24.12.2010
Сообщений: 19,348
20.11.2012, 01:11 #3
DORE145, #include <math.h> стоит?
mrmaster88
42 / 42 / 3
Регистрация: 13.04.2012
Сообщений: 112
20.11.2012, 01:21 #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  [ТС] #5
<cmath> подключен
m от нуля до 1
t0 от нуля до 5000
m и t0 вводятся с клавиатуры
v от нуля до 1200 пробивается циклом с шагом 5

mrmaster88 то что вы написали работает также как и мой код.
Ошибка мною уже найдена. Я по своей неимоверной глупости перепутал различные массы а именно малярную массу, которую вводил с клавиатуры и массу одной молекулы которую собственно и нужно было вводить
Спасибо за помощь и внимание
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 01:32
Привет! Вот еще темы с ответами:

Вычислить exp(-x) разложением в ряд - C++
№1 Дано натуральное число N. Вычислить e^(-x)=∑_(n=0)^∞▒(〖(-1)〗^n x^n)/n!=1-x+x^2/2!-x^3/3!+x^4/4!-…. |x|&lt;IFN №2 Вычмслить формулу...

Графическое оформление функции Y=A*EXP(X) - C++
Здравствуйте, сделал функцию с горем пополам Y=a*exp(x) вышла коряво но строит навроде правильно теперь остался вопрос с графическим...

вычисление математической функции exp(x) - C++
составил алгоритмы: алг Общ (арг вещ Х, арг цел N, рез вещ S) нач | если N = 0 | | то S:=1 | | иначе S:=Общ(X, N-1)*X/N...

Вычисление exp в ряд Тейлора - C++
Здравствуйте! кто - нибудь подскажите пожалуйста формулу разложения e^(x) для вычисления функции в ряд тейлора


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

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

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