Алгоритм моделирования с использованием среды MatLab

Автор работы: Пользователь скрыл имя, 17 Сентября 2011 в 09:40, лабораторная работа

Краткое описание

Цель работы
Освоить приемы программирования и реализации простейших алгоритмов моделирования с использованием среды MatLab. Получить навыки, которые будут полезны при выполнении последующих лабораторных работ.

Содержимое работы - 1 файл

!КМ - 0 л.р..docx

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

Министерство  образования и науки Российской Федерации

Новосибирский государственный технический университет

Кафедра экономической информатики 

Новосибирск

2010 

Цель  работы

    Освоить приемы программирования и реализации простейших алгоритмов моделирования  с использованием среды MatLab. Получить навыки, которые будут полезны при выполнении последующих лабораторных работ.   
 

Ход работы 

  1. Теория  о биномиальном распределении:
 

   Биномиальное  распределение в теории вероятностейраспределение количества «успехов» в последовательности из независимых случайных экспериментов, таких что вероятность «успеха» в каждом из них равна . 

   Если  вероятности появления отдельных  вариант выражаются величинами, соответствующими коэффициентам разложения бинома Ньютона, то такое распределение называется биномиальным. Оно относится к признакам, варьирующим дискретно, прерывисто. В этом случае частоты отдельных классов пропорциональны коэффициентам разложения бинома Ньютона: 

(Р + Ч)к, 

где р и q— вероятности появления каждого признака; к — число классов, отличающихся по появлению признака. 

     Если  р = 0,5, q= 0,5, а к - увеличивается, то биномиальная кривая приближается к нормальной кривой, которая является пределом биномиального распределения. Чем больше различаются значения р и q, тем значительнее асимметрия биномиальной кривой. Средняя арифметическая и среднее квадратическое отклонение характеризуют биномиальное распределение. 
 
 
 

 
 

 
 
 
 
 
 
 
 
 
 
 
 

  1. Задание 1:
 
  1. Написать программу, генерирующую выборку, элементы которой  подчинены закону распределения  в соответствии с Вашим вариантом  из таблицы 1, и построить график функции плотности вероятностей и функции распределения.
 

    А) Выборка: 

N = 10;

P=0.5;

m=[1 100];

y = binornd(N,P,m) 
 

    Результат: 

y =  4     5     4     6     5     2     5     6     4     4     6

     6     4     7     3     6     6     7     7     6     5     5

     1     6     7     4     4     3     2     4     4     5     6

     4     4     5     3     5     7     4     7     2     7     7

     4     5     4     4     4     8     7     6     3     6     5

     7     3     4     4     3     4     4     5     5     4     6

     4     5     8     4     1     7     7     7     6     3     7

     6     7     8     7     3     4     4     6     9     6     6

     5     5     5     4     4     4     4     4     5     4     5 
 
 

    Б) для плотности вероятности 

 

Программа: 

x = 0:10;

y = binopdf(x,10,0.5);

plot(x,y,'-') 

Результат:

рис.1 
 

    В) для функции распределения 

Программа: 

x = 0:0.1:10;

y = binocdf(x,10,0.5);

plot(x,y) 
 

Результат:

рис. 2

  1. Построить гистограмму для выборки (используйте функцию hist).
 

     

Программа: 

N = 10;

P=0.5;

m=[1 100];

y = binornd(N,P,m)

hist(y,N)

grid on 

Результат:

рис.3 
 
 
 
 

  1. С использованием этих программ провести тестовые расчеты для разных значений N (общего количества элементов в выборке, объема выборки) в  диапазоне от  50 до 1000 и построить  графики изменения  погрешности аппроксимации (используйте  любой известный  Вам критерий) идеальных  функции плотности  вероятностей и функции  распределения их выборочными аналогами  в зависимости  от N.
 
 

    А) для функции распределения 

Программа:

 

  n=1000;

 k=50:1:n;

a=binocdf(k,n,p);

 plot(k,a,'d')

 grid on 

Результат: 

    рис.4 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    Б) для плотности  вероятности 

Программа: 

 n=1000;

 k=50:1:n;

 P=binopdf(k,n,p);

 plot(k,P,'d')

 grid on 

Результат: 

    рис. 5 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

  1. Задание 2:
 
  1. Написать программу, моделирующую плоское движение идеального маятника (можно воспользоваться  программой comet, см. описание в Приложении Б ниже).
 
 

    Comet – это движение точки по траектории. 

     
     

Программа: 

function [ output_args ] = lab0( input_args )

 

 

x=[-0.5,-0.5,0.5,0.5]

y=[0,1,1,0]

 

plot(x,y,'ow')

hold on

 

t=-10*pi:pi/250:10*pi;

r=3;

m=1;

x = sin(m/r*sin(t))

y = 1-cos(m/r*sin(t))+0.2

      

mycomet(x,y);

 

end 
 
 
 
 
 
 
 
 
 

Результат:

 

  рис.6 

  1. Промоделировать движение спутника вокруг планеты (воспользоваться  программой comet3 для моделирования движений точек в трехмерных пространствах).
 

    comet3 – это движение точки по траектории в трехмерном пространстве.

     

Программа:

     

 R2 = 0.7;

for k2=1:1:100;

  

    x2(k2) = R2 * cos(2*pi/100*k2);

    y2(k2) = R2 * sin(2*pi/100*k2);

   

end

 

plot(x2,y2,'g.')

 

 hold on

t2 = 1:0.01:100;

h2 = 1;

 x2 = cos(t2) * h2;

y2= sin(t2) * h2;

 comet3(x2,y2,t2) 
 
 

Результат: 
 

рис. 7 
 
 

  1. Сгенерировать и изобразить множество  точек, распределенных в соответствии с  равномерным законом  распределения в  прямоугольнике.
 
 

Программа: 

a=2;

b=4;

plot([0 0 6 6 0],[0 5 5 0 0] ,'r');

hold on

x = (a + (b-a))*rand(5, (a + (b-a)));

plot(x,'+')

axis([-1 7 -1 6]); 
 

Результат:

    рис. 8

  1. Сгенерировать точки-вершины плоского многоугольника и вычислить его площадь с помощью функции polyarea.

    Построить многоугольник (см. пп. 4), сгенерировать координаты N точек и с помощью функции inpolygon определить, какие из них лежат внутри этого многоугольника.  
     

     В системе MATLAB определены функции, вычисляющие  площадь полигона и анализирующие  нахождение точек внутри полигона. Для вычисления площади полигона используется функция polyarea:

     polyarea(X.Y) — возвращает площадь полигона, заданного вершинами, находящимися в векторах X и Y. Если X и Y — матрицы одного размера, то polyarea возвращает площадь полигонов, определенных столбцами X и Y;

     polyarea(X.Y.dim) — возвращает площадь полигона, заданного столбцами или строками X и Y в зависимости от значения переменной dim. 

     Функция Inpolygon используется для анализа того, попадают ли заданные точки внутрь полигона:

     IN=inpolygon(X,Y.xv.yv) — возвращает матрицу IN того же размера, что X и Y. Каждый элемент матрицы IN принимает одно из значений — 1, 0.5 или 0 — в зависимости от того, находится ли точка с координатами (X(p,q),Y(p,q)) внутри полигона, вершины которого определяются векторами xv и yv:

     IN(p,q) = 1 — если то.чка (X(p.q) ,Y(p,q)) лежит внутри полигона;

     IN(p,q) = 0.5 — если точка (X(p,q) ,Y(p,q)) лежит на границе полигона;

     IN(p.q) = 0 — если точка (X(p.q),Y(p,q)) лежит вне полигона. 
 
 
 
 
 
 
 
 
 

Программа: 

x=[0 0 2 2 0]; y=[0 2 2 0 0];

plot(x,y,'r')

a=polyarea(x,y)

axis([-1 3 -1 3]) 
 
 

Результат:

а= 4 рис.9 
 
 

Программа: 

L = linspace(0,2.*pi,6); xv = cos(L)';yv = sin(L)';

xv = [xv ; xv(1)]; yv = [yv ; yv(1)];

x = randn(250,1); y = randn(250,1);

in = inpolygon(x,y,xv,yv);

plot(xv,yv,x(in),y(in),'r+',x(~in),y(~in),'bo') 

Результат:

a = 8.6086

 рис. 10 

  1. Задание 3:
 
  1. Сгенерировать элементы выборки, подчиненные закону распределения (см. таблицу 1) и оценить параметры функции плотности вероятностей (или аппроксимирующей функции плотности) любым из методов (например, методом максимального правдоподобия). 

Информация о работе Алгоритм моделирования с использованием среды MatLab