Математическое моделирование трехмерного распределения

Автор работы: Пользователь скрыл имя, 25 Февраля 2013 в 14:21, курсовая работа

Описание работы

Значение константы однозначно определяется условием нормировки:
Отсюда: c=1/SD.
Равномерно распределённые случайные величины получили самое широкое применение при решении задач методами Монте-Карло.
Методы Монте-Карло – это численные методы решения математических задач и прямое статистическое моделирование при помощи получения и преобразования случайных чисел.

Содержание работы

Задание на курсовую работу 3
Краткие сведения из теории 3
Реализация программы4
Заключение4
Список литературы 5
Приложение № 1 6

Файлы: 1 файл

Курсовая работа иатематическое моделирование.docx

— 48.07 Кб (Скачать файл)

 

СОДЕРЖАНИЕ

Задание на курсовую работу 3

Краткие сведения из теории 3

Реализация  программы4

Заключение4

Список литературы 5

Приложение № 1 6

 

 

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

Моделирование трехмерного распределения  при x[0;2], y[0;0,5], z[0,2]

 

КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ

Случайная величина (X,Y,Z)  равномерно распределена в области D площадью SD , если ее плотность распределения задается так:

 

Значение  константы однозначно определяется условием нормировки:

 

Отсюда: c=1/SD.

Равномерно распределённые случайные величины получили самое широкое применение при решении задач методами Монте-Карло.

Методы Монте-Карло – это  численные методы решения математических задач и  прямое статистическое моделирование  при помощи получения и преобразования случайных чисел.

В основе метода Монте-Карло  лежит  генерация случайных чисел, которые  должны быть равномерно распределены в интервале (0; 1). Если генератор выдает числа, смещенные в какую-то часть интервала (одни числа выпадают чаще других), то результат решения задачи, решаемой статистическим методом, может оказаться неверным. Поэтому проблема использования хорошего генератора действительно случайных и действительно равномерно распределенных чисел стоит очень остро.

 

РЕАЛИЗАЦИЯ ПРОГРАММЫ

Рисунок 1- Модель распределения случайной величины

 

ЗАКЛЮЧЕНИЕ

В процессе работы была разработана программа, которая выводит случайные величины на равномерном пространстве с помощью  метода Монте – Карло.

 

 

ПРИЛОЖЕНИЕ № 1

Текст программы:

 

 

#include <vcl.h>

#pragma hdrstop

 

#include "main.h"

#include <cmath>

 

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int xg[13];

int yg[13];

 

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)

{

int x0,y0; //координаты начала координатных осей

int dx,dy; //шаг координатной сетки (в пикселях)

int h,w; //высота и ширина области вывода координатной сетки

int x,y;

double lx,ly; //метки (оцифровка) линий сетки по X и Y

double dlx,dly; //шаг меток (оцифровки) линий сетки по X и Y

int cross; //счетчик неоцифрованных линий сетки

int dcross;//количество неоцифрованных линий между оцифрованными

int i; //Счетчик цикла

int c1,c2,x2,y2,x3,y3,x4,y4,x5,y5,length;

 

x0=30; y0=420; // оси начинаются в заданной  точке

dx=40; dy=40; // шаг координатной сетки 40 пикселов

dcross=1; // помечать линии сетки X: 1 - каждую;

dlx=1.0; // шаг  меток оси X

dly=1.0; // шаг  меток оси Y, метками будут: 1, 2, 3 и т.д.

h=400; w=520;

Form1->Canvas->Pen->Color=clGray;

cross=dcross;

Form1->Canvas->Pen->Width=1;

Form1->Canvas->MoveTo(x0,y0); Form1->Canvas->LineTo(x0,y0-h); // ось X

Form1->Canvas->MoveTo(x0,y0); Form1->Canvas->LineTo(x0+w, y0); // ось Y

// засечки,  сетка и оцифровка по оси  X

x=x0+dx;

lx=dlx;

do

{

Form1->Canvas->MoveTo(x,y0-3);Form1->Canvas->LineTo(x,y0+3); // засечка

cross=cross-1;

Form1->Canvas->Pen->Style=psDot;

Form1->Canvas->MoveTo(x,y0-3);Form1->Canvas->LineTo(x,y0-h); // линия сетки

Form1->Canvas->Pen->Style=psSolid;

lx=lx+dlx;

x=x+dx;

}

while (x<=x0+w);

// засечки,  сетка и оцифровка по оси  Y

y=y0-dy;

ly=dly;

do

{

Form1->Canvas->MoveTo(x0-3,y); Form1->Canvas->LineTo(x0+3,y); // засечка

Form1->Canvas->MoveTo(x0+3,y); Form1->Canvas->LineTo(x0+w,y); // линия сетки

Form1->Canvas->Pen->Style=psSolid;

y=y-dy;

ly=ly+dly;

}

while (y>=y0-h);

//построение  осей

c1 = 270; c2 = 260; //начало координат

x2 = 150; y2 =380; //ox

x3 = 470; y3 =260; //oy

x4 = 270;  y4 =60; //oz

Form1->Canvas->Pen->Color=clBlack;

Form1->Canvas->Pen->Width=2;

Form1->Canvas->MoveTo(c1,c2); Form1->Canvas->LineTo(x2,y2);

Form1->Canvas->MoveTo(c1,c2); Form1->Canvas->LineTo(x3,y3);

Form1->Canvas->MoveTo(c1,c2); Form1->Canvas->LineTo(x4,y4);

//стрелочки

Form1->Canvas->MoveTo(x2,y2); Form1->Canvas->LineTo(x2,y2-13);

Form1->Canvas->MoveTo(x2,y2); Form1->Canvas->LineTo(x2+13,y2);

Form1->Canvas->MoveTo(x3,y3); Form1->Canvas->LineTo(x3-10,y3-13);

Form1->Canvas->MoveTo(x3,y3); Form1->Canvas->LineTo(x3-10,y3+13);

Form1->Canvas->MoveTo(x4,y4); Form1->Canvas->LineTo(x4-10,y4+13);

Form1->Canvas->MoveTo(x4,y4); Form1->Canvas->LineTo(x4+10,y4+13);

//точки

Form1->Canvas->MoveTo(c1+40,c2); Form1->Canvas->LineTo(c1+40,c2+5);

Form1->Canvas->MoveTo(c1+40,c2); Form1->Canvas->LineTo(c1+40,c2-5);

Form1->Canvas->MoveTo(c1,c2-160); Form1->Canvas->LineTo(c1+5,c2-160);

Form1->Canvas->MoveTo(c1,c2-160); Form1->Canvas->LineTo(c1-5,c2-160);

Form1->Canvas->MoveTo(c1-113,c2+113); Form1->Canvas->LineTo(c1-113,c2+117);

Form1->Canvas->MoveTo(c1-113,c2+113); Form1->Canvas->LineTo(c1-113,c2+108);

 

//надписи

Form1->Canvas->TextOut(150, 390," X");

Form1->Canvas->TextOut(470, 270," Y");

Form1->Canvas->TextOut(255, 50," Z");

Form1->Canvas->TextOut(c1-15,c2-160,"2");

Form1->Canvas->TextOut(c1+40,c2+15,"0,5");

Form1->Canvas->TextOut(c1-113,c2+120,"2");

 

 

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int size, x, y, z,x1,y1;

size = 3;

//Randomize();

x = rand() % (Form1->Height / 4);

y = rand() % (Form1->Width / 12);

z = rand() % int((Form1->Height/2.5)) ;

x1 = (Form1->Height / 2+y-x / std::sqrt( 3.0));

y1 = (Form1->Width / 2-z+x / std::sqrt( 2.0));

Form1->Canvas->Pen->Color = RGB(random(255),random(255),random(255));

Form1->Canvas->Ellipse(x1,y1,x1 + size,y1 + size);

 

}

//---------------------------------------------------------------------------


Информация о работе Математическое моделирование трехмерного распределения