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

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

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

метод моте карло - C++

04.12.2011, 11:45. Просмотров 471. Ответов 0
Метки нет (Все метки)

нужна помощ в исправлении кода (где + стоят нужно исправит на свое значение).....
Задание: у нас есть 2войной интеграл (x+y)dx dy , где D ограниченная прямыми y=0, y=x, x=1
код метода Монте Карло:
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
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <fstream>
#define _USE_MATH_DEFINES
#include <math.h>
#include <time.h>
 
using namespace std;                                                                       
                                                                      
const double                            
  //*r = 1.0,                                         
  x1 = 0, x2 =1,                              
  y11 = 0, y2 = 1,                             
  z1 =  0, z2 = 2,                                              
 
  V1 = (x2-x1)*(y2-y11)*(z2-z1),  // Объем описанного параллелепипеда.
  V2 = 2,                      // Объем вписанного конуса.                          +
  Vexact = M_PI/8,               // Точное значение объема полусферы.     +
 
  p2 = V2/V1,                    
 
  m = 0.01,                  
  za = 1.96,                    
 
  N = (za*za)/(m*m)*(1-p2)/p2;   
 
double
  p,                        
  V,                            
  x,y,z,                         .
  mnew;                      
 
unsigned long i,j,
  Nx=0;                        
 
int InBody(double x, double y, double z) { 
  if (pow(x*x+y*y,2)<=2*x*y && x+y >= z)    //        +
     return 1;  // true
    else return 0;  // false
}
 
ofstream fout("MonteCar.txt", ios::app);
 
void main() {
 
  time_t *ttt = new time_t;
  time(ttt);
  srand((unsigned int)(*ttt));
  delete ttt;
 
  for (i=1; i<=N; i++) {
    // Згенерувати випадкову точку, 0 <= rand()/RAND_MAX < 1
    x = (x2-x1) * rand()/RAND_MAX + x1; // x1 <= x <= x2;
    y = (y2-y11) * rand()/RAND_MAX + y11; // y11 <= y <= y2;
    z = (z2-z1) * rand()/RAND_MAX + z1; // z1 <= z <= z2;
 
    if (InBody(x,y,z)) Nx++;            
  }
 
  p = Nx /N;
  V = V1 * p;
  mnew = za * sqrt((1-p)/(N*p));
 
 
  fout << "Half-sphere volume by Monte-Carlo method" << endl;
  fout << "V1 = " << V1 << endl;
  fout << "V2 = " << V2 << endl;
  fout << "p2 = " << p2 << endl;
  fout << "N  = " << (long)N << endl;
  fout << "Nx = " << Nx << endl;
  fout << "p  = " << p  << endl;
  fout << "V  = " << V  << endl;
  fout << "m  = " << mnew*100 << "%" << endl;
  fout << "Volume is in [" << V*(1-mnew) << "; " << V*(1+mnew) << "] with probability alpha = 0,95" <<  endl;
  fout << "Vexact  = " << Vexact << " is ";
 
  if ( (Vexact<=V*(1-mnew)) || (V*(1+mnew)<=Vexact) ) fout<< endl  << "NOT ";
  fout << "in. "; //<< endl << endl;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2011, 11:45     метод моте карло
Посмотрите здесь:

Нужно описать структуру с именем МОТЕ и т.д. - C++
Описать структуру с именем МОТЕ, содержащую следующие поля: - фамилия, имя; - номер телефона; - дата рождения (массив из трех чисел)....

Метод Монте-Карло (вероятность попадания при стрельбе) - C++
В общем задача такова: Добавить Метод Монтекарло, что бы показывало всевозможные попытки расчета вероятности. Сама задача: Производится...

Вычисление интеграла методом Монте-Карло - C++
Здравствуйте! Задача такая: пользователь в текстовом файле задает координаты точек (любое количество точек), программа считывает...

Вычисление интеграла геометрическим методом Монте-Карло - C++ - C++
Всем доброго времени суток. В универе дали задание: вычислить интеграл \int_{0}^{1}dx\int_{0}^{1-x}(1-x-y)dy геометрическим методом...

Нужно составить программу решения задачи оптимального выбора методом случайного тпоиска(монте-карло) - C++
Задана таблица из 10 элементов. Вес 16 11 12 13 14 15 16 17 18 19 Цена 18 20 17 19 22 21 27 23 25 24 Нужно составить...

Метод Монте-Карло - MathCAD
Добрый вечер! помогите пожалуйста написать программу для МаthCad, для решения интегралов методом Монте-Карло. Нигде не нашёл, а встроенные...

Метод Монте-Карло - MathCAD
Нужно записать метод Монте-Карло в mathcad`е. Наткнулся на этот сайт...

Метод Монте-Карло - Delphi
Уважаемые эксперты помоги теожалуйста найти ошибку. Реализовывал метод Монте-Карло для нахождения определенного интеграла, но при ручном...

Метод Монте-Карло - C#
Помогите пожалуйста


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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