Автор: Пользователь скрыл имя, 29 Октября 2013 в 22:56, курсовая работа
Метод Монте-Карло оказал и продолжает оказывать существенное влияние на развитие методов вычислительной математики (например, развитие методов численного интегрирования) и при решении многих задач успешно сочетается с другими вычислительными методами и дополняет их. Его применение оправдано в первую очередь в тех задачах, которые допускают теоретико-вероятностное описание. Это объясняется как естественностью получения ответа с некоторой заданной вероятностью в задачах с вероятностным содержанием, так и существенным упрощением процедуры решения.
Однако до появления ЭВМ этот метод не мог найти сколько-нибудь широкого применения, так как моделировать случайные величины вручную – очень трудоёмкая работа. Таким образом, возникновение метода Монте-Карло как весьма универсального численного метода стало возможным только благодаря появлению ЭВМ.
Введение…………………………………………………………………………..5
1 Некоторые сведения теории вероятностей…………………………..…..….7
1.1 Математическое ожидание, дисперсия……………………………….……7
1.2 Точность оценки, доверительная вероятность……………………………...9
1.3 Нормальное распределение…………………………………………………10
2 Сущность метода Монте-Карло…………...………………………………….12
2.1 Генераторы случайных чисел………………………………………………16
3 Практическая часть………………………………………………..…………21
3.1Задание………………………………………………………………………21
3.2 Алгоритм интегрирования методом Монте-Карло для определенного интеграла……………………………………………………………………….21
3.3 Вычисление кратных интегралов…………………………………………..22
3.4 Описание пользовательского интерфейса…………………………………24
Заключение………………………………………………………………………26
Список литературы………………………………….………………………
Листинг программы для кратных интегралов
package monte.karlo1;
import java.security.SecureRandom;
import java.util.Random;
import java.util.Scanner;
public class MonteKarlo1 {
public static void main(String[] args) {
float x,j,y;float j1=0; int m=0;
Scanner sc = new Scanner(System.in);
Random ran = new Random();
SecureRandom ran1 = new SecureRandom();
System.out.println("двойной интеграл(x^2+y^2)dxdy");
System.out.println("задайте область интегрирования по x от 0 до 1");
System.out.println("левая граница:");
float a = sc.nextFloat();
System.out.println("правая граница:");
float b = sc.nextFloat();
System.out.println("количество испытаний:");
int N= sc.nextInt();
while (N>0) {
x=ran.nextFloat();
y=ran1.nextFloat();
if ( (x>=a) && (x<=b) )
{
m=m+1;
if ( (y>=0) && (y<=2*x-1))
{
j=x*x+y*y;
j1=j1+j;
} }
N--;
}
float I=j1/m;
System.out.println("оценка интеграла: "+I);
}}