Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ExceLab2 (Таб.разветвл.функций).doc
Скачиваний:
7
Добавлен:
20.11.2018
Размер:
222.21 Кб
Скачать

В рассматриваемом примере выбираем переключатель типа Function.

  1. В поле Scope (Область действия) выбираем переключатель Public (Общедоступный), обеспечивая тем самым доступность функции пользователя из любых других книг.

  2. После нажатия кнопки ОК в поле редактора вносятся две строки заготовки функции:

Public Function F1V()

End Function

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

Public Function F1V(x, a, b)

F1V = a + Exp(b * x)

End Function

  1. Для проверки работоспособности созданной функции F1V, используя "Мастер функций", запишем обращение к ней в ячейку С12. Для этого в окне первого шага "Мастера функций" в поле "Категория:" выбираем категорию "Определенные пользователем". Выбор функции F1V и нажатие кнопки ОК открывает ДО для определения параметров обращения. На рис. 9 показан результат определения ссылок в полях окна второго шага "Мастера функций"

Рис. 9

Следует обратить внимание на то, что ссылки на параметры А и В должны быть абсолютными. Этим обеспечивается возможность "протягивания" формулы для вычисления значений функции F1V в ячейках от С12 до С32.

  1. Повторяя действия пунктов от 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 + х).

Неправильная расстановка скобок в записи выражений является наиболее часто встречающейся ошибкой.

  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

  1. Сравнивая столбцы F(X), QRF(X) и QRF1(X) таблицы, мы видим их полную идентичность. В окончательном документе можно удалить два из этих трёх столбцов.

  2. Перед построением графиков функций F1V, F2V, F3V и QRF1(X) обратим внимание на то, что в таблице значений функции F2V значение функции для аргумента Х = -1 равно 4,053Е+15. Это большое число получается из-за того, что знаменатель функции в этой точке становится равным 0. Аналогичная особая точка имеется и в функции F3V при значении аргумента равном нулю. В таблице, приведенной на рис. 10, мы видим что при значении аргумента равном -2,8Е-16 в функции F3V имеет место выброс. Вид графиков, построенных по данным, приведенным в таблице рис. 10, показан на диаграмме рис. 11.

Рис. 11.

  1. Исключить влияние особых точек можно, построив отдельно график разветвляющейся функции. Если же мы всё-таки хотим получить диаграмму, позволяющую выполнить наглядное сравнение функций, то можно "сгладить" выбросы в особых точках, заменив в этих точках значения функций F2V и F3V на максимальное или минимальное значение, достигаемые одной из табулируемых функций на интервале изменения аргумента.

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

а) заменим значения функций в особых точках каким-либо числом, принадлежащим интервалу значений, определяемому таблицей. (В нашем примере можно ввести в соответствующие ячейки таблицы нули.)

б) Выделим все значения функций, входящие в таблицу. (В нашем случае это ячейки от В12 до Е32.)

в) Переведём УМ к полю автоматического вычисления итогов в строке состояния.

г) Для выбора функции автоматического подведения итогов выполним ЩПК и откроем контекстное меню с набором итоговых функций.

д) Выберем строку с названием функции "Минимум"ЩЛК. Запишем минимальное числовое значение, отображаемое в поле итоговых формул строки состояния.

е) Повторим действия пункта "г)" и выберем функцию "Максимум".

  1. Запишем полученные нами минимальное и максимальное значения в соответствующие ячейки обнуленные нами ранее. Таким образом, мы получим таблицу, из которой будут убраны "особые" точки.

  2. По этой таблице построим графики функций и выполним необходимые операции начального форматирования диаграммы.

  3. Выполняем форматирование заголовка документа, таблицы и окончательное форматирование диаграммы.

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