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

Метод Монте-Карло для вычисления двойных интегралов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка wreorder при компиляции класса http://www.cyberforum.ru/cpp-beginners/thread666046.html
В общем замучался каждый раз чего-нибудь упрощать. Вот допустим есть класс ab, если попытаться запустить такой код, то выдаст кучку ошибок: #include <iostream> class ab { public: ab(int x,int y):b(y),a(x){} private: int a; int b;
C++ Класс с индексированием не компилируется. Исправить код Очень прошу помощи, сишу злюсь на себя, что не понимаю :( В учебнике глава с перегрузкой операторов, оператор , высыпан как должное вот такой код, который причем у меня не компилится #include <iostream> #include <vector> using namespace std; class Foo { public: http://www.cyberforum.ru/cpp-beginners/thread666040.html
Вывести в виде таблицы и чтобы выбивало ошибку при делении на 0 C++
Почему то,когда ввожу данные,результаты не выводит,где здесь ошибка и как в виде таблицы вывести,и ещё,правильно ли записал,чтобы при делении на 0 выбивало ошибку? Вычислить и вывести на экран в виде таблицы значения функции F на интервале от XНАЧ до XКОН с шагом dX. f=a*x2+b2*x,при с<0 и b 0 f=x+a/x+c,при с>0 и b=0 f=x/c,в остальных случаях где a, b, c – действительные числа. Функция F...
C++ Вычислить приближенное значение суммы ряда
Доброе время суток, помогите пожалуйста сделать лабораторную по С++, что то ничего у меня не получается. Если не затруднит, можно полностью код... Даны числа x и E(епсилон) (E>0). Вычислить приближенное значение: 1/x^2+1/2x^3+1/3x^4+1/4x^5+...,(x>1)
C++ поясните по оператору "%" http://www.cyberforum.ru/cpp-beginners/thread665986.html
Привет товарищи. По оператору "%" я правильно понимаю??? int x, y; x = 6; y = 3; z = 7; cout << x / y; cout << "\n\n"; cout << x % y;
C++ Передача указателя на массив и использование этого массива Здравствуйте. в h объявляю void SaveAll(QTextEdit *textedit); в одной из функций передаю функции SaveAll указатель на массив SaveAll(&textedits);//так ругается компилятор но ведь сам массив виден только той функции в которой вызываю SaveAll(),Разве я могу сделать в SaveAll так например void MyPro::SaveAll(QTextEdit *textedit){ подробнее

Показать сообщение отдельно
Nuclear_Razor
49 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 103
Записей в блоге: 1
08.10.2012, 13:04     Метод Монте-Карло для вычисления двойных интегралов
Всем привет, недавно столкнулся с проблемой вычисления двойных интегралов. Узнал о методе Монте-Карло, который много где используется, в том числе и для вычисления интегралов. Но, единственный вариант его использования нашел на этом форуме, и то алгоритм был как-то не до конца рабочий.
Если использовать обычный метод прямоугольников, то должно что-то получится вроде: "цикл в цикле", но у меня с этим совсем все туго. В западных источниках про этот метод мало чего вообще сказано, я так понял в плане реализации их на C++ у них там все туго. Использование всяких библиотек вроде aglib прошу не предлагать, мне интересна сама реализация.

Есть такой кусок года:

C++
1
2
3
4
5
6
7
8
9
        double dx = ( xk - x0 ) / n;
    double sum = 0.0;
    args[ var ] = x0;
 
    for ( int i = 0; i < n; i++ ) 
    {
        sum += dx * e->evaluate( args );
        args[ var ] += dx;
    }
Вычисляет все правильно для определенного интеграла, используются такие вещи:

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
        Parser p;
    std::string expr;
    std::string var;
        
        //  Независимая переменная, по которой ведется интегрирование
    std::cout << "\nВведите аргумент, по которому будет идти интегрирование: ";
    std::cin >> var;
 
    std::cout << "\nВведите нижний предел интегрирования: "; std::cin >> x0;
    std::cout << "\nВведите верхний предел интегрирования: "; std::cin >> xk;
    
 
    //  Парсим выражение и получаем его дерево
    Tree* e = p.parse( expr );
     
    //  Ассоциативный массив(таблица) для списка неизвестных в выражении
    SymbolTable args;
    //  Получаем список неизвестных(идентификаторов) из выражения
    getIdentifiers( e, args );
//  Предлагаем ввести значение каждого параметра кроме независимой переменной
    for ( SymbolTable::iterator it = args.begin(); it != args.end(); ++it )
    {
        //  Пропускаем независимую переменную
        if ( !it->first.compare( var ) )
        {
            continue;
        }
        //  Запрашиваем значение
        std::cout << it->first << " = ";
        std::cin >> it->second;
    }
Все это нужно для парсинга, но главный вопрос - в составлении правильного алгоритма. Насчет ввода пределов интегрирования вопрос тоже нет, так как можно задать либо число либо функцию, но вот как работать с этим...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru