Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Excel_new.doc
Скачиваний:
97
Добавлен:
22.02.2015
Размер:
5.05 Mб
Скачать
      1. Заполнение массива случайными числами

Формирование случайных данных, подчиняющихся равномерному или какому-либо иному закону распределения, наиболее часто встречается в задачах надежности и статистического моделирования.

Работа предлагаемого программного модуля, составленного для заполнения блока ячеек случайными числами, не требует особых комментариев:

Операторы

Примечание

Sub Random()

Dim numRow As Integer, numcol As Integer

Dim Row As Integer, col As Integer

numRow = Selection.Rows.Count

Число строк в блоке

numcol = Selection.Columns.Count

Число столбцов в блоке

Randomize

Начальный запуск генератора случайных чисел

For Row = 1 To numRow

Цикл по строкам

For col = 1 To numcol

Цикл по столбцам

Selection.Cells(Row, col).Value = Rnd

Выбор ячейки в блоке и ее заполнение случайным числом

Next col

Next Row

End Sub

      1. Линейная интерполяция

Часто функции задаются двумя (аргумент и функция) соответствующими друг другу рядами чисел. Работа с такими функциями связана с интерполяцией функции в интервалах между точками. К сожалению, Excel не располагает подходящей стандартной функцией, ее необходимо создать самостоятельно. Ниже приводится один из возможных вариантов программы. Программа выполняет как интерполяцию, так и экстраполяцию (при выходе аргумента за левую или правую границы заданного интервала) функции.

В программе следует обратить внимание на необходимость проверки соразмерности исходных массивов. Для этого определяется и сопоставляется число строк массивов.

Другой важный момент - динамическое выделение памяти для рабочих массивов, реализуемое с помощью оператора Redim, выполняемого после уточнения действительной размерности массива.

Характерным в данной программе является использование цикла Do WhileLoop для определения интервала интерполяции.

' Линейная интерполяция. Массивы blx (параметров) и bly (функций) задаются столбцами.

' Первый массив (blx) упорядочен по возрастанию. x – текущий параметр.

Public Function lin_interpolation(blx, bly, x As Single) As Single

Dim n As Integer, i As Integer, y As Single

n = blx.Rows.Count: i = bly.Rows.Count 'Для проверки соразмерности массивов

n = Application.Min(n, i)

If (n < 2) Then ' Необходимая проверка

Application.Msbox ("Интерполяция не возможна, Массивы не соразмерны ")

Exit Function ‘Выход из программы по условию

End If

If (x <= blx(1)) Then

y = bly(1) + (bly(2) - bly(1)) / (blx(2) - blx(1)) * (x - blx(1)) ' Нижняя экстраполяция

ElseIf (x > blx(n)) Then ' Верхняя экстраполяция

y = bly(n - 1) + (bly(n) - bly(n - 1)) / (blx(n) - blx(n - 1)) * (x - blx(n - 1))

Else

i = 1

Do While (x > blx(i)) ' Поиск интервала. Цикл Do While

i = i + 1

Loop

y = bly(i - 1) + (bly(i) - bly(i - 1)) / (blx(i) - blx(i - 1)) * (x - blx(i - 1))

End If

lin_interpolation = y

End Function

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