- •Основы алгоритмизации и языки программирования Учебно-методическое пособие
- •Содержание
- •Лабораторная работа №1. Базовые языковые конструкции vfp и vba. Основы работы с данными
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №2. Определение корней уравнений Определение корня уравнения методом деления отрезка пополам (дихотомии)
- •Определение корня одномерного уравнения методами касательных и секущих
- •Определение корня одномерного уравнения методом простой итерации
- •Задания
- •Контрольные вопросы
- •Определение максимального и минимального значения функции двух переменных методом градиентного спуска (подъема)
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №4. Рекурсия. Рекурсивные алгоритмы Рекурсия. Рекурсивные алгоритмы
- •Графика и рекурсивные алгоритмы
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №5. Аппроксимация, интерполяция и экстраполяция Простейшие способы интерполяции и экстраполяции данных
- •Аппроксимация выборки случайных чисел методом наименьших квадратов
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №6. Решение систем линейных уравнений Решение систем линейных уравнений методом Гаусса
- •Решение систем линейных уравнений методом Гаусса с выбором максимального элемента
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №7. Итерационные методы решения систем линейных уравнений. Приложения численных методов решения систем линейных уравнений Метод Зейделя
- •Метод Гаусса-Зейделя
- •Обращение матрицы nхn с использованием метода Гаусса
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №8. Вычисление определенных интегралов Вычисление определенных интегралов методом прямоугольников
- •Вычисление определенных интегралов методом трапеций
- •Вычисление интеграла по методу Симпсона
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №9. Численное решение дифференциальных уравнений Методы численного решения дифференциальных уравнений первого порядка
- •Метод Эйлера
- •Метод Кранка-Николсона
- •Метод Рунге-Кутты четвертого порядка для решения уравнения первого порядка
- •Методы численного решения систем дифференциальных уравнений Гармонические колебания
- •Затухающие колебания
- •Периодический процесс с затуханием и с внешней силой
- •Решение системы дифференциальных уравнений методом Эйлера
- •Решение системы дифференциальных уравнений первого порядка методом Рунге-Кутты
- •Контрольные вопросы
- •Задания
- •Лабораторная работа №10. Генерация равномерных и неравномерных распределений случайных чисел Использование гистограмм для отображения характера распределения случайной величины
- •Генератор дискретно-распределенных значений
- •Генерация дискретных распределений с заданным характером распределения вероятностей
- •Генерация непрерывных распределений вещественных величин Псевдонормальное распределение
- •Генерация линейно возрастающего распределения
- •Контрольные вопросы
- •Задания
- •Список рекомендуемой литературы и источников
Генерация дискретных распределений с заданным характером распределения вероятностей
Рассмотрим ситуацию, когда известны не вероятности событий Xi, а количества их реализации или другие величины пропорциональные вероятностям Pi.
Пусть необходимо построить генератор дискретных величин X(1), X(2), … X(N), N=10, вероятности реализации которых, пропорциональны величинам PR(1), PR(2), … PR(N).
Для реализации такого алгоритма необходимо найти вероятности P(i) реализации i-ой величины X(i). Затем, на основе массива P(i) рассчитать левые LB(i), правые RB(i) границы i-ых подинтервалов на отрезке (0,1). Можно не вычислять массив RB(i), поскольку RB(i) = LB(i)+P(i).
X(i) |
PR(i) |
P(i) |
LB(i) |
RB(i) |
1 |
10 |
|
0 |
|
2 |
32 |
|
|
|
3 |
120 |
|
|
|
4 |
220 |
|
|
|
5 |
100 |
|
|
|
6 |
56 |
|
|
|
7 |
45 |
|
|
|
8 |
30 |
|
|
|
9 |
70 |
|
|
|
10 |
120 |
|
|
|
Найдем массив вероятностей P(i). Найдем сумму всех PR(i):
Тогда массив вероятностей P(i) = PR(i)/S.
Левая граница первого отрезка должна быть равна нулю: LB(1) =0, соответственно правую границу первого отрезка находим как:
RB(1)= LB(1)+P(1)
Остальные элементы массивов LB(i) и RB(i) можно определить в цикле:
Цикл по i=2 до N
LB(i) =LB(i-1)
RB(i) = LB(i)+P(i)
Конец Цикла
Xr = rnd
Цикл по i=1 до N
Если xr>= LB(i) и xr < RB(i) тогда
Возврат X(i)
Конец Если
Конец Цикла
Генерация непрерывных распределений вещественных величин Псевдонормальное распределение
Рассмотрим очень простой метод генерации колоколообразного распределения вещественной величины. Этот метод основан на следующем факте: если сложить результаты N независимых экспериментов, возвращающих равномерно распределенные случайные величины от 0 до 1, тогда вероятность получения близких к нулю величин и близких к N будет низка, а вероятность получения значений близких к N/2 – велика. Само распределение будет иметь вид колокола и если N устремить к бесконечности, тогда получится так называемое «Нормальное» распределение.
Функция ГенераторПсевдоНормальногоРаспределения
n=10
x=0
Цикл по I от 1 до n
x=x+RAND()
Конец Цикла
Возврат x/10
Конец Функции
Рис.1 Гистограмма псевдонормального распределения
Вид гистограммы псевдонормального распределения. Количество испытаний 100000, интервалов – 100.
Генерация линейно возрастающего распределения
Распределение непрерывной вещественной величины с вероятностью линейно-возрастающей от 0 до 1 дает следующий, очень простой алгоритм
Функция ГенераторЛинейноВозрастающегоРаспределения
x=RAND()
Возврат x^0.5
Конец Функции
Рис.2 Гистограмма распределения x^0.5 для x=rand().
Гистограмма результатов 400000 испытаний линейно-возрастающего генератора непрерывных случайных величин от 0 до 1 (количество разбиений интервала (0,1) - 100) приведениа на рисунке 2.
Рис. 3 Гистограмма распределения x^1.5 для x=rand()
Рис.4 Гистограмма распределения x^2 для x=rand()
Рис.5 Гистограмма распределения x^4 для x=rand()
Рис.6 Гистограмма распределения x^0.2 для x=rand()
Рис.7 Гистограмма распределения x^0.7 для x=rand()
Для
получения более сложного – комбинированного
распределения можно использовать
комбинацию степенных распределений.
Так, если исходные базовые распределения
определяются по формулам:
,
,
…
,
где x=rand(),
тогда формула для комбинированного
распределения должна иметь вид:
Рис.8 Гистограмма распределения (x^0.2 + x^4)/2 для x=rand()
