Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB_3.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
959.45 Кб
Скачать

Практическая часть

Пример 1. Считая, что случайный процесс является простейшим Пуассоновским потоком, рассчитать вероятности нахождения в потоке 2, 3, 4 требований на отрезке времени длиной t = 12. В качестве интенсивности потока принять число 1.23. Для решения создать М-сценарий с именем test1.m.

Программный код решения примера

% М-сценарий с именем test1

% М-файл сохранен как test1.m

clear all, clc %% очистка памяти и командного окна

L = 1.23; %% интенсивность потока

t = 2.34; %% время, для расчета вероятности

p0 = (L*t)^0/factorial(0) * exp(-L * t)

p1 = (L*t)^1/factorial(1) * exp(-L * t)

p2 = (L*t)^2/factorial(2) * exp(-L * t)

p3 = (L*t)^3/factorial(3) * exp(-L * t)

p4 = (L*t)^4/factorial(4) * exp(-L * t)

p5 = (L*t)^5/factorial(5) * exp(-L * t)

Результат выполнения программы:

P0 =

0.0562

P1 =

0.1619

P2 =

0.2329

P3 =

0.2235

P4 =

0.1608

P5 =

0.0926

В программе использована функция нахождения факториала числа – factorial.

Если в командном окне набрать help test1, то получим справку о данном М-файле, если в нем имеются комментарии:

>> help test1

М-сценарий с именем test1

М-файл сохранен как test1.m

Пример 2. Предыдущий пример оформить в виде М-функции с именем fun1.

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

function [p0,p1,p2,p3,p4,p5] = fun1(L, t)

% Расчет вероятностей количества требований

% в простейшем потоке Пуассона

p0 = (L*t)^0/factorial(0)*exp(-L*t);

p1 = (L*t)^1/factorial(1)*exp(-L*t);

p2 = (L*t)^2/factorial(2)*exp(-L*t);

p3 = (L*t)^3/factorial(3)*exp(-L*t);

p4 = (L*t)^4/factorial(4)*exp(-L*t);

p5 = (L*t)^5/factorial(5)*exp(-L*t);

end

Результат обращения к созданной М-функции из командного окна системы MATLAB:

>> [P0,P1,P2,P3,P4,P5] = fun1(1.23, 2.34)

P0 =

0.0562

P1 =

0.1619

P2 =

0.2329

P3 =

0.2235

P4 =

0.1608

P5 =

0.0926

Задание 1

  1. Создайте функцию, аргументами которой будут год и месяц вашего рождения, а возвращаемым значением был бы календарь заданного года и месяца. Обращение к созданной функции выполните из М-сценария, в котором задайте год и месяц своего рождения.

  2. Напишите М-функцию, которая бы возвращала сумму элементов данной строки и данного столбца магического квадрата, размерность которого должна быть входным аргументом М-функции.

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

Программный код решения примера

function [S, C] = fun3(X, A, B)

% Главная М-функция

% Аргументы функции fun3:

% X – числовой вектор

% A, B – числовые прямоугольные матрицы одинакового размера

% Возвращаемые значения:

% S – сумма из корня кубического элементов вектора Х

% C – результат поэлементного произведения двух матриц A и B

% Обращение к подфункциям с фактическими параметрами

S = sum(funs(X));

C = funt(A, B);

end

function f = funs(Y)

%% М-подфункция извлечения корня кубического

%% из элементов заданного вектора

f = sign(Y).*abs(Y).^(1/3); % см. help sign, help abs

end

function F = funt(A, B)

%% М-подфункция поэлементного произведения

%% двух матриц

F = A.*B;

end

Пример выполнения программы при обращении к М-функции fun3 из командной строки:

>> [s,c] = fun3([1, 27,-19683], [1,2;3,4], [6,7;8,9])

s =

-23.0000

c =

6 14

24 36

Пример 4. Написать М-функцию, которая обеспечивает сложение векторов неизвестного заранее количества.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]