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

Вычисление функции Лапласа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Woody-krsk
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 62
01.07.2012, 07:46     Вычисление функции Лапласа #1
Здравствуйте!
Есть необходимость в нахождении значений для этой функции. Варант с большой таблицей не очень нравится, хочется именно вычислять ее.
Собственно гугл дал мне метод средних прямойгольников
http://www.textreferat.com/referat-1405-1.html
и табличку чтобы провериться
http://natalymath.narod.ru/laplas.html
Вроде ничего сложного, последовательно сделав все получился такой код
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
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
double func_laplace(double, double);
 
int main(){
    setlocale(0,"");
    double a, precision;
    do {
        cout << "a = "; cin >> a;
        //cout << "precision = "; cin >> precision;
        cout << func_laplace(a, .0001) << endl;
        cout << "Продолжаем?(y)..." << endl;
    } while (_getch() == 121);
 
    return 0;
}
 
double func_laplace(double a, double precision){
    double result = 0;
    for (double i = 0; i < a; i+=precision){        
        result += precision*fabs(pow(M_E,-.5*pow(i,2))+pow(M_E,.5*pow((i+precision),2)))/2.0;   
    }
    result *= 1.0/pow(2*M_PI,.5);
    return result;
}
Вроде как бы и считает, но проблема в том, что если на маленьких значениях все в порядке, то чем больше значение функции тем дальше от истины получается ответ.
a = .01
0.00402932
Продолжаем?(y)...
a = .51
0.203848
Продолжаем?(y)...
a = 1.01
0.413597
Продолжаем?(y)...
a = 1.51
0.68565
Продолжаем?(y)...
a = 2.02
1.21274
Продолжаем?(y)...
Собственно прошу помощи, ЧЯДНТ?
PS: я уже делал эту функцию в прошлом году и тогда у меня вроде такой проблемы не было, все вычислялось, но сейчас код потерялся, а почему не работает я не могу понять...

Добавлено через 4 минуты
Ой! Удалите тему, я нашел ошибку!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 07:46     Вычисление функции Лапласа
Посмотрите здесь:

C++ Вычисление функции
вычисление функции C++
Вычисление функции C++
Вычислить m значений функции f(x) на отрезке [a, b]. Вычисление величины f(x) оформить в виде функции C++
C++ Вычисление функции
Перевести с Pascal вычисление функции на заданном промежутке и построить график этой функции C++
C++ Вычисление функции y=F(x)
C++ Вычисление функции на заданном промежутке, и построение графика этой функции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Major7786
1 / 1 / 0
Регистрация: 03.10.2013
Сообщений: 45
25.03.2015, 14:34     Вычисление функции Лапласа #2
В чем была ошибка

Добавлено через 3 минуты
Woody-krsk, вы писали функцию нахождения значения функции лапласа . там была ошибка, хотелось узнать какая

Добавлено через 4 часа 58 минут
Ошибка в пропущенном минусе в 28 строке 2 примера

Добавлено через 14 секунд
Ошибка в пропущенном минусе в 28 строке 2 примера

Добавлено через 15 минут
Ошибка в пропущенном минусе в 28 строке 2 примера
Yandex
Объявления
25.03.2015, 14:34     Вычисление функции Лапласа
Ответ Создать тему
Опции темы

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