- •Лабораторная работа № 2 Табулирование разветвляющихся функций Постановка задачи
- •Методика выполнения лабораторной работы
- •Алгоритм вычисления разветвляющейся функции
- •Порядок выполнения работы:
- •Проверка правильности вычислений
- •Создание функций пользователя средствами vba
- •В рассматриваемом примере выбираем переключатель типа Function.
- •Подготовка результирующего документа к выводу на печать
В рассматриваемом примере выбираем переключатель типа Function.
-
В поле Scope (Область действия) выбираем переключатель Public (Общедоступный), обеспечивая тем самым доступность функции пользователя из любых других книг.
-
После нажатия кнопки ОК в поле редактора вносятся две строки заготовки функции:
Public Function F1V()
End Function
-
Используя эту заготовку, допишем функцию пользователя для вычислений на первой ветке разветвляющейся функции.
Public Function F1V(x, a, b)
F1V = a + Exp(b * x)
End Function
-
Для проверки работоспособности созданной функции F1V, используя "Мастер функций", запишем обращение к ней в ячейку С12. Для этого в окне первого шага "Мастера функций" в поле "Категория:" выбираем категорию "Определенные пользователем". Выбор функции F1V и нажатие кнопки ОК открывает ДО для определения параметров обращения. На рис. 9 показан результат определения ссылок в полях окна второго шага "Мастера функций"
Рис. 9
Следует обратить внимание на то, что ссылки на параметры А и В должны быть абсолютными. Этим обеспечивается возможность "протягивания" формулы для вычисления значений функции F1V в ячейках от С12 до С32.
-
Повторяя действия пунктов от 2 до 8, создаем функции F2V и F3V, реализующие соответственно функции для вычисления второй, третьей ветвей функции средствами алгоритмического языка Visual Basic. Ниже приведены тексты этих функций.
Public Function F2V(x, a, b)
F2V=(a+b*x)/(1+x)
End Function
Public Function F3V(x, a, b)
F3V = a / (b * x)
End Function
В записи выражений, реализующих функции F2V и F3V, следует обратить внимание на последовательность выполнения операций. Эта последовательность определяется приоритетами выполняемых операций и расстановкой круглых скобок.
Рассмотрим порядок выполнения операций по записи оператора для вычисления функции F2V
Первой выполняется операция умножения b на х. Второй выполняется операция сложения , в результате выполнения которой вычисляется значение числителя. Третьей операцией выполняется вычисление знаменателя (1 + х) и лишь после этого выполняется операция деления значения на (1 + х).
Неправильная расстановка скобок в записи выражений является наиболее часто встречающейся ошибкой.
-
Реализовав в модуле функции F1V, F2V, F3V и заполнив соответствующие столбцы таблицы, переходим к записи процедуры для вычисления значения разветвляющейся функции. Назовем эту функцию QRF. Блок-схема её алгоритма приведена на рис. 1.
Реализация этой функции на языке программирования Visual Basic (VB) отличается от формата формулы, использованной нами в реализации функции средствами программы Excel.
Public Function QRF(x, a, b, alfa, betta)
'x - аргумент функции, a,b,alfa,betta - параметры
If (x < alfa) Then QRF = a + Exp(b * x) _
Else _
If (x <= betta) Then QRF = (a + b * x) / (1 + x) _
Else QRF = a / (b * x)
End Function
Для реализации логического условия "ЕСЛИ" в языке VB используется логический оператор
If <условие> Then <значение_функции_на_1-й_ветви>
Else <значение_функции_на_2-й_ветви>
(Перевод слов: If - если, Then - тогда, Else - иначе).
Для записи операторов, в языке многострочных
Возможен другой вариант реализации разветвляющейся функции, в котором используются обращения к уже созданным ранее функциям F1V, F2V и F3V. Ниже приводится текст функции QRF1 с обращениями к этим функциям.
Public Function QRF1(x, a, b, alfa, betta)
'x - аргумент функции, a,b,alfa,betta - параметры
If (x < alfa) Then QRF1 = F1V(x, a, b) _
Else _
If (x <= betta) Then QRF1 = F2V(x, a, b) _
Else QRF1 = F3V(x, a, b)
End Function
На рис. 10 приведён фрагмент таблицы, в которую включены столбцы F(X) - вычисление разветвляющейся функции средствами программы Excel, QRF(X) и QRF1(X) - вычисление разветвляющейся функции с использованием двух вариантов реализации разветвляющейся функции средствами языка программирования VB.
Рис. 10
-
Сравнивая столбцы F(X), QRF(X) и QRF1(X) таблицы, мы видим их полную идентичность. В окончательном документе можно удалить два из этих трёх столбцов.
-
Перед построением графиков функций F1V, F2V, F3V и QRF1(X) обратим внимание на то, что в таблице значений функции F2V значение функции для аргумента Х = -1 равно 4,053Е+15. Это большое число получается из-за того, что знаменатель функции в этой точке становится равным 0. Аналогичная особая точка имеется и в функции F3V при значении аргумента равном нулю. В таблице, приведенной на рис. 10, мы видим что при значении аргумента равном -2,8Е-16 в функции F3V имеет место выброс. Вид графиков, построенных по данным, приведенным в таблице рис. 10, показан на диаграмме рис. 11.
Рис. 11.
-
Исключить влияние особых точек можно, построив отдельно график разветвляющейся функции. Если же мы всё-таки хотим получить диаграмму, позволяющую выполнить наглядное сравнение функций, то можно "сгладить" выбросы в особых точках, заменив в этих точках значения функций F2V и F3V на максимальное или минимальное значение, достигаемые одной из табулируемых функций на интервале изменения аргумента.
-
Для определения максимального или минимального значений, достигаемых хотя бы одной из табулируемых функций, выполним следующие действия:
а) заменим значения функций в особых точках каким-либо числом, принадлежащим интервалу значений, определяемому таблицей. (В нашем примере можно ввести в соответствующие ячейки таблицы нули.)
б) Выделим все значения функций, входящие в таблицу. (В нашем случае это ячейки от В12 до Е32.)
в) Переведём УМ к полю автоматического вычисления итогов в строке состояния.
г) Для выбора функции автоматического подведения итогов выполним ЩПК и откроем контекстное меню с набором итоговых функций.
д) Выберем строку с названием функции "Минимум" ЩЛК. Запишем минимальное числовое значение, отображаемое в поле итоговых формул строки состояния.
е) Повторим действия пункта "г)" и выберем функцию "Максимум".
-
Запишем полученные нами минимальное и максимальное значения в соответствующие ячейки обнуленные нами ранее. Таким образом, мы получим таблицу, из которой будут убраны "особые" точки.
-
По этой таблице построим графики функций и выполним необходимые операции начального форматирования диаграммы.
-
Выполняем форматирование заголовка документа, таблицы и окончательное форматирование диаграммы.