Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 55
1

Метод Монте-Карло

04.06.2014, 17:54. Показов 6953. Ответов 13
Метки нет (Все метки)

Помогите написать программу для вычисления определенного интеграла методом Монте-Карло.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2014, 17:54
Ответы с готовыми решениями:

Метод Монте-Карло
как мне перевести этот код на с++..... помогите пожалуста(( program MonteKarlo; uses crt; ...

метод Монте-Карло
Трехмерное тело образовано объединением нескольких сфер произвольного размера и взаимного...

Метод Монте-Карло
С помощью метода Монте-Карло найдите оценку объема шара, центр которой совпадает с началом...

метод Монте-Карло
всем привет, у меня вопрос по методу Монте - Карло, у меня есть код, #include <stdlib.h> #include...

13
случайный прохожий
1687 / 1090 / 376
Регистрация: 20.07.2013
Сообщений: 2,985
04.06.2014, 18:08 2
Лучший ответ Сообщение было отмечено Psilon как решение

Решение

http://www.compmodel.ru/102/118/index.1.html
Рассчет определенного интеграла методом Монте-Карло.
0
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 55
05.06.2014, 17:40  [ТС] 3
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
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include "windows.h"
int main()
{
    SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
    double s=0, Integral, x;
    int Number_Of_Points, i, Lower_Limit, Upper_Limit;
    srand(time(NULL));
    printf("\nEnter the lower limit:\n");                      
    scanf_s("%d",&Lower_Limit);
    printf("Enter the upper limit:\n");                           
    scanf_s("%d",&Upper_Limit); 
    printf("Enter the number of points\n");                     
    scanf_s("%d",&Number_Of_Points);
    for (i=1; i<=Number_Of_Points; i++) {                   
        x=Lower_Limit+(Upper_Limit-Lower_Limit)*rand()/(1.0*RAND_MAX);
        s=s + x;
    }
    Integral=((Upper_Limit-Lower_Limit)*s)/Number_Of_Points ;
    printf("Integral = %f\n",Integral);
    _getch();
    return 0;
}
Вот, что получилось, помогите сделать выбор подинтегральной функции.
0
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
05.06.2014, 17:49 4
У Лукинова вычесление методом монте-калло очень хорошо прописано

Добавлено через 2 минуты
И rand замени он НЕ ПОДХОДИТ. Погрешность очень большая.
0
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 55
05.06.2014, 17:53  [ТС] 5
Winorun, да нет, у меня все считает нормально, я на листочке решаю сам, погрешность где-то 0.01
0
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
05.06.2014, 18:00 6
Сколько Number_Of_Points берешь? и 0.01 это много.

Добавлено через 1 минуту
У меня после 100000 расхождение пошли ответ вышел за предпологаемую точность.
0
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 55
05.06.2014, 18:02  [ТС] 7
Winorun, ну меня это сейчас не интересует, нужно как-то замутить выбор функции, все никак не получается. Number_Of_Points примерно 100-200.
0
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
05.06.2014, 18:18 8
Я правильно понял ты хочешь чтобы пользователь задавал подинтергальную функцию?
0
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 55
05.06.2014, 18:32  [ТС] 9
Winorun, хочу например создать так

***Меню***
1. sin(x)
2. cos(x) .... и так далее
пользователь вводит номер функции и вычисляется интеграл от нее, вот почему-то не получается у меня, можете помочь?
0
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
05.06.2014, 18:40 10
Сылки на функцию
0
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 55
05.06.2014, 18:41  [ТС] 11
Winorun, не понял??
0
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
05.06.2014, 18:43 12
В Алгоритме вызываешь функцию по сылки, А при выборе меню приравневаешь сылку к функции.
Не сылки а указатель, Вот ссылка
http://lord-n.narod.ru/downloa... 5/0508.htm
0
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 55
05.06.2014, 18:50  [ТС] 13
Winorun, не до конца понял, можешь мой текст подредактировать хотя бы для двоих функций, остальные сам сделаю.
0
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
05.06.2014, 19:09 14
Просто создаешь указатель на функцию. Допустим INT_FUN.
C++
1
bool (* INT_FUN)(int x);
Обьявляешь несколько фукций с одинаковым обьявлением.
C++
1
2
3
bool SIN(int x){/* тут код вычесляющий попал не попал*/};
bool COS(int x){/* тут код вычесляющий попал не попал*/};
...
В майне выводишь меню, считываешь пункт.
потом
C++
1
2
if(menu==1) INT_FUN=SIN;
if(menu==2) INT_FUN=COS;
Потом про SIN,COS и т.д. забываешь напрочь и считашь все через INT_FUN

Добавлено через 6 минут
Еще можешь привязать последним пунктом скрипт
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2014, 19:09

Метод Монте-Карло
Помогите написать программу на С++. Из множества 1, 2, ..., n, случайным образом извлекается с...

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

вроде метод монте карло
распишите пожалуйста что делает это программа?? int i,a,b,n,k,c,d,e,f; double s1,s,x,y,z; int...

Метод Монте-Карло. Объем сферы
Задан радиус сферы и количество итераций. Найти объём сферы методом Монте-Карло и определить...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru