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

Массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Стеки http://www.cyberforum.ru/cpp-beginners/thread407261.html
Создать класс типа - стек. Функции-члены вставляют элемент в стек, вытаскивают элемент из стека. Проверяют вершину стека. Помогите пожалуйста с этой задачей, а то я не могу разобраться, заранее спасибо :)
C++ Функции, которые получают строку и int Здравствуйте! Пожалуйста, помогите написать: -функцию, которая получает значение int, -функцию, которая получает строку -создать отдельные классы, отвечающие за ввод и вывод; -функции, отвечающие за правильность данных must, have. Огромное спасибо заранее. Новичок. http://www.cyberforum.ru/cpp-beginners/thread407246.html
C++ Составить блок-схему
Добрый день, помогите пожалуйста составить блок-схему, примеров не нашёл, весь нэт перерыл. Спасибо! #include <iostream> #include <string> #include <algorithm> int main() {
Комметарии и строковые константы C++
Подскажите ,пожалуйста,попался вопрос :"Комметарии и строковые константы могут начинаться подключаемом файле и продолжаться в исходном файле". нужен фрагмент кода к примеру.
C++ Переделать случайное заполнение матрицы http://www.cyberforum.ru/cpp-beginners/thread407226.html
Приветсвую! Помогите пожалуйста переделать код (а именно заполнение матрицы). Нужно чтобы каждый элемент матрицы случайно заполнялся, а не как сейчас (случайно, но они одинаковые все) Вот код: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; #define m 4
C++ Таймер в консольном приложении Подскажите, как сделать чтобы консольное приложение было постоянно запущено и раз в 1 минуту выполняло одну из функций? Добавлено через 4 минуты Кажется, сам нашел - Sleep (delay in sec) :-| подробнее

Показать сообщение отдельно
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 20:56     Массив
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
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
 
double R(const int a,const  int b) {
    return (double)rand()/(double)RAND_MAX*(b-a)+a;
}
 
int main() {
    srand(time(NULL));
    double x,y,integral;
    int p=int();
    for(int i = 0; i < 100000; i++) {
        x = R(0,5);
        y = R(0,5);
        if(pow(x,2.0/3.0) <= (pow(5,2.0/3.0) - pow(y,2.0/3.0)) && pow(y,2.0/3.0) <= (pow(5,2.0/3.0) - pow(x,2.0/3.0))) {
            p++;
        }
    }
    integral = p/100000.0*25;
    cout << integral << endl;
 
    system("pause");
    return 0;
}
Интеграл по этой фигуре ( x^(2/3)+y^(2/3) = 5^(2/3), y = 0, x = 0 (в первой четверти))
Ну какая-то теория по алгоритму:
Код
II. Метод статистических испытаний (метод Монте-Карло)

0. Неформальное введение в метод Монте-Карло интегрирования n-мерных функций

Предположим, нам надо найти объём шара с R=1, находящегося в начале системы
координат. Описываем этот шар кубом. Куб будет иметь длину ребра, равную 2, и
его центр также будет находиться в начале системы координат. Начинаем
генерировать точки со случайными координатами (x,y,z) так, чтобы они находились
внутри куба - т.е. каждая координата будет случайным числом в диапазоне [-1,1].
Для каждой точки определяем, попала она внутрь шара, или нет. Сгенерировав
достаточно большое количество точек, найдем соотношение числа точек, попавших в
шар, к общему числу точек. Это соотношение примерно равно соотношению объёма
шара к объёму куба. Умножив его на объём куба (который легко вычисляется),
получим (приближенно) искомый объём шара.

1. Формальное введение

Пусть имеется многомерный объём V. Равномерно разбросаем в нём N случайных
точек x[1], ..., x[N]. Тогда базовая теорема о приближенной оценке
интеграла от функции f() по многомерному объёму V методом Монте-Карло
утверждает, что интеграл функции f() по многомерному объёму V приближенно равен:
    Integral (f * dV) ~= V * G1,
причем ошибка оценки значения интеграла обратно пропорциональна N и равна:
    E = V * sqrt ((G2 - G1^2) / N),
где
    V  = объем многомерной области
    G1 = среднее арифметическое N значений функции g(),
    G2 = среднее арифметическое N значений функции g()^2.

Иногда требуется найти интеграл функции w() по многомерному объему W сложной
формы, который трудно заполнить равномерно. В этом случае выбирают область V,
которая включает W и может быть без труда заполнена равномерно (например,
многомерный параллелипипед), а функцию w() доопределяют в области V\W (т.е. вне
W, но внутри V) как равную нулю:
    g(x) = w(x), если x принадлежит W,
    g(x) = 0,    если x принадлежит V\W.
Затем к функции g() и области V применяют базовую теорему.

Метод предполагает, что функция g() определена в любой точке области V.

Чем "плотнее" область V облегает W (т.е. чем меньше объем V\W), тем меньше
будет ошибка оценки E. Чем больше число точек N, тем меньше будет ошибка
оценки E.

2. Приложения метода Монте-Карло

А. Нахождение объема области W: для этого полагают w(x)=1, где x принадлежит W

Б. Нахождение массы тела W: при этом предполагается, что функция w() задает
   плотность (в общем случае неравномерную в пространстве)

В. Нахождение координат центра массы тела W: при этом предполагается, что
   функция w() задает произведение координат на плотность r() (в общем случае
   неравномерную в пространстве):
     w(x,y,x) = (x * r(x,y,z), y * r(x,y,z), z * r(x,y,z)) .
   С помощью описанной выше процедуры вычисляют линейные моменты mi для каждой
   координаты, затем находят массу тела m (см. п. Б). Тогда координаты центра
   масс будут определятся как отношение соответствующих линейных моментов к
   массе тела. Например, для трехмерного пространства:
     x = mx / m
     y = my / m
     z = mz / m
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru