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

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

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

Метод Монте-Карло(непонятная неработоспособность программы) - C++

02.12.2012, 19:00. Просмотров 605. Ответов 5
Метки нет (Все метки)

Написал программу, которая вычисляет интеграл методом Монте-Карло. Вроде как код проверял, перепроверял и должно быть всё верно. Но при указывании кол-ва точек >7000 программа не работает, то есть зависает. А если, к примеру, указать кол-во точек 10000, то выбивает с ошибкой "Divide error". С чем это связано не пойму.
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
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
class method{
    public:
        double allsumm(double *x,int n);
        void createrand(double *x,int n);
};
double method::allsumm(double *x,int n){
    double temp=0;
    for(int i=0;i<n;i++){
        temp+=sqrt(pow(x[i],4)-pow(x[i],3)+8);
    }
    return temp;
}
void method::createrand(double *x,int n){
    for(int i=0;i<n;i++){
        x[i]=0.0001*(rand()%30001);
    }
}
void main(){
clrscr();
double a=0,b=3.2,temp;
unsigned long int n;
double *x;
method MonteKarlo;
cout<<"Vvedite koli4estvo to4ek ";
cin>>n;
x=new double[n];
/*cout<<"Vvedite interval\n a: ";
cin>>a;
cout<<"b: ";
cin>>b;*/
MonteKarlo.createrand(x,n);
temp=MonteKarlo.allsumm(x,n);
cout<<"Summ= "<<temp;
cout<<"\nI= "<<((b-a)*temp)/n;
 
getch();
}
Добавлено через 25 минут
Так всё сложно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 19:00     Метод Монте-Карло(непонятная неработоспособность программы)
Посмотрите здесь:

Метод монте Карло - C++
Здравствуйте! Посмотрите, пожалуйста, почему программа неправильно считает определенный интеграл методом Монте Карло. Считаю интеграл от -3...

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

Монте-карло - C++
Преподаватель попросил разобрать метод монте-карло, и реализовать его в c++, помогите реализовать метод в с++

Странный интеграл методом Монте-Карло - C++
Вычислить интеграл методом монте-карло. Лекцию проболел, а из найденных источников нашел только как с обычными интегралами работать, не...

Таблица умножения методом Монте-Карло - C++
Пожалуйста помогите, нужна программа для вывода таблицы умножения методом Монте-Карло

Определить площадь фигуры (методом Монте-Карло) - C++
Здраво народ! Стоит задача: с помощью метода Монте-Карло найти площадь фигуры. Для этого я генерирую случайные числа в диапазоне от 0 до 8....

Определение площади заштрихованной фигуры методом Монте-Карло - C++
Составить программу для определения методом Монте-Карло пло- щади заштрихованой фигуры. Вычислить фактическую площадь и сравнить ее с...

Методом Монте-Карло определить площадь заштрихованой фигуры - C++
Нарисовать линиями в Chart for (int i=0; i&lt;=100; i++) { x=i; ...

Процедура вычисления кратного интеграла методом Монте-Карло - C++
Создать функцию для вычисления кратных интегралов методом Монте Карло. Помогите написать рабочий код. Укажите на ошибки. #include...

Найти объём сферы методом Монте-Карло и определить точность - C++
Помогите решить 2 задачи в программе C 1) заданы координаты вершин треугольников. Определить, является ли этот треугольник...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
02.12.2012, 19:27     Метод Монте-Карло(непонятная неработоспособность программы) #2
не понял вашей проблемы,у меняза доли секунды ваш код и 20 тысяч точек делает, другое дело алгоритм проверить не могу, не сталкивался с этим методом
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
02.12.2012, 19:32     Метод Монте-Карло(непонятная неработоспособность программы) #3
вот пример
Миниатюры
Метод Монте-Карло(непонятная неработоспособность программы)  
Mefodiy
1 / 1 / 0
Регистрация: 21.04.2012
Сообщений: 46
02.12.2012, 19:38  [ТС]     Метод Монте-Карло(непонятная неработоспособность программы) #4
Цитата Сообщение от Nixy Посмотреть сообщение
не понял вашей проблемы,у меняза доли секунды ваш код и 20 тысяч точек делает, другое дело алгоритм проверить не могу, не сталкивался с этим методом
У меня проблема с тем, что при вводе более 7000 точек, программа перестает работать. Алгоритм не нужно проверять, он верен. Говорите высчитывает? Можете указать результаты? И если можно, то укажите наибольшее кол-во точек.
ps я обновил код. проверьте по новому коду
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
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
class method{
    public:
        double allsumm(double *x,unsigned long int n);
        void createrand(double *x,unsigned long int n);
};
double method::allsumm(double *x,unsigned long int n){
    double temp=0;
    for(unsigned long int i=0;i<n;i++){
        temp+=sqrt(pow(x[i],4)-pow(x[i],3)+8);
    }
    return temp;
}
void method::createrand(double *x,unsigned long int n){
    for(unsigned long int i=0;i<n;i++){
        x[i]=0.0001*(rand()%30001);
    }
}
void main(){
clrscr();
randomize();
double a=0,b=3.2,temp;
unsigned long int n;
double *x;
method MonteKarlo;
cout<<"Vvedite koli4estvo to4ek ";
cin>>n;
x=new double[n];
/*cout<<"Vvedite interval\n a: ";
cin>>a;
cout<<"b: ";
cin>>b;*/
MonteKarlo.createrand(x,n);
temp=MonteKarlo.allsumm(x,n);
cout<<"Summ= "<<temp;
cout<<"\nI= "<<((b-a)*temp)/n;
getch();
}
Добавлено через 3 минуты
upd
это может быть связано с тем, что у меня win 7 и я включаю си через dosbox?
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
02.12.2012, 19:49     Метод Монте-Карло(непонятная неработоспособность программы) #5
попробуйте использовать другую среду разработки , возможно то что вы написали и я вляется причиной, задержки, гдето есть тема про бесплатные среды разработки, посмотрите что нибудь под w7, я вот пользуюсь builderom , многие сидят на VS С++
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
02.12.2012, 19:53     Метод Монте-Карло(непонятная неработоспособность программы) #6
пожалуйста с новым кодом
Миниатюры
Метод Монте-Карло(непонятная неработоспособность программы)  
Yandex
Объявления
02.12.2012, 19:53     Метод Монте-Карло(непонятная неработоспособность программы)
Ответ Создать тему
Опции темы

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