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

Монте-карло - C++

Восстановить пароль Регистрация
 
REmakerzz
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 3
23.04.2013, 18:36     Монте-карло #1
Преподаватель попросил разобрать метод монте-карло, и реализовать его в c++, помогите реализовать метод в с++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 18:36     Монте-карло
Посмотрите здесь:

метод Монте-Карло C++
C++ метод Монте-Карло
C++ Метод Монте-Карло
C++ Метод монте Карло
C++ вроде метод монте карло
Таблица умножения методом Монте-Карло C++
Метод Монте-Карло. Объем сферы C++
C++ Метод Монте-Карло

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
23.04.2013, 18:45     Монте-карло #2
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 
 
 
double f( double x, double y ) {
    return ((x*x+1)/(x*x*x*x-x*x+1));
}
 
int main() {
 
    srand( time ( NULL ) );//чтобы генерированые числа в рандоме не повторялись
   
 
    double Zmax = 0., t, x = 0., y, z;//объявление переменных
    double SumINTEGR = 0., INTEGR = 0., averINTEGR;
    int i, j, HIT;
 
    for ( i = 0; i < 100; ++i ) {
 
        y = 0.;
 
        for ( j = 0; j < 100; ++j ) {
            if( Zmax < ( t = f( x, y ) ) )
                Zmax = t;
            y += 0.01;
        }
        x +=0.01;
    }
 
 
    for( i = 0; i < 10; ++i ) {
 
        // Число попаданий точек в искомый объем под поверхностью функции
        HIT = 0;
 
        //Значение интеграла
        INTEGR = 0.;
 
        for( j = 0; j < 183065; ++j ) {
 
           x = (double) ( rand() ) / RAND_MAX;//заполняем x  в интервале 0 1
           y = (double) ( rand() ) / RAND_MAX;
           z = (double) ( rand() ) * 10.0 / RAND_MAX;
 
            if( z <= f( x, y ) )//проверка
                ++HIT;
 
        }
 
        INTEGR = (double) HIT / 183065. * 10.;
        SumINTEGR += INTEGR;//значение интеграла
    }
 
    // Среднее значение интеграла в 10 случаях
    averINTEGR = SumINTEGR / 10.;
 
    printf( "Значение интеграла   = %lf\n", averINTEGR );
    printf( "Z максимальное       = %lf\n", Zmax );
 getch ();
    return 0;
}
Метод Монте-Карло
Yandex
Объявления
23.04.2013, 18:45     Монте-карло
Ответ Создать тему
Опции темы

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