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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти количество пар соседних элементов, которые имеют одинаковые абсолютные значения, но противоположные знаки http://www.cyberforum.ru/cpp-beginners/thread398389.html
Найдите ошибку пожалуйста! задание "Найти количество пар соседних элементов, которые имеют одинаковые абсолютные значения, но противоположные знаки, используя указатель". язык программировании С #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <iostream.h> main(){ int m1,m2,m3,k; int *A, *I; clrscr(); const int size=5;
C++ [C++] Квадратная матрица Создать функцию для преобразования исходной квадратной матрицы следующим образом: все элементы матрицы выше главной диагонали должны стать равными 0, элементы ниже главной диагонали должны стать равными 1, а элементы главной диагонали должны стать равными отношению их прежнего значения на максимальный элемент главной диагонали. Написать программу для тестирования созданной функции. В... http://www.cyberforum.ru/cpp-beginners/thread398388.html
C++ Не пойму где ошибка в конструкторе
Здравствуйте, вот начал писать писать свой класс для работы с большими числами, не могу понять одну ошибку. Вот листинг программы: main.cpp: #include <iostream> #include "bigint.h" int main(int argc, char *argv) {
решение задачи на C++? C++
1. Напишите программу, которая находит сумму негативных элементов в одномерном массиве через функцию. 2. Напишите программу Платежка. Я задаю сумму денег и оператор (KCell, beeline, pathword). Программа выводит на экран "сумма принята. Комиссия ХХХ тенге", после удачного пополнения. Сумма не пополнится, если вводится оператор, другой чем выше перечисленные. Если платеж не прошел успешно,...
C++ Получить последовательность чисел по заданному правилу http://www.cyberforum.ru/cpp-beginners/thread398380.html
напишите весь код на языке си
C++ (pBUF +1)=0 ??? Для чего применяют (pBUF +1)=0 ??? подробнее

Показать сообщение отдельно
vova_makarovych
0 / 0 / 0
Регистрация: 22.09.2010
Сообщений: 30

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

04.12.2011, 11:45. Просмотров 472. Ответов 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;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru