- •1. Основные правила работы в excel
- •1.2. Основные понятия Excel
- •1.3. Выделение блока ячеек
- •1.4. Ввод текстов
- •1.5. Ввод чисел
- •1.6. Ввод стандартных списков.
- •1.7. Ввод формул
- •1.8. Работа с Мастером функций
- •1.9. Присваивание имён ячейкам и блокам
- •1.10. Использование подписей данных
- •1.11. Правка информации
- •1.12. Копирование и перемещение информации
- •1.13. Команды форматирования
- •2.2. Второй шаг Мастера диаграмм: источник данных диаграммы
- •3.1. Расчёт таблицы значений функции от одного аргумента
- •3.2. Расчёт таблицы значений функции от двух аргументов
- •3.3. Использование функции если для анализа информации
- •3.4. Оценка определённого интеграла
- •3.5. Нахождение корня уравнения
- •3.6. Решение систем уравнений
- •3.7. Решение задач оптимизации
- •4. Использование visual basic в excel
- •4.1. Работа с макросами
- •4.2. Создание простых функций пользователя
- •4.3. Вычисление определенного интеграла
- •Задание.
- •4.4. Решение обыкновенных дифференциальных уравнений. Задача Коши
- •Задание.
- •5. Задания для самостоятельной работы
- •Литература
- •Содержание
4.2. Создание простых функций пользователя
Библиотеку функций Excel можно дополнить функциями пользователя. Это делается средствами Visual Basic.
Проверьте, есть ли в Мастере функций раздел "Определенные пользователем". Он может уже существовать, если до Вас кто-то уже создавал собственные функции. В противном случае, он отсутствует и появится после того, как Вы создадите свою.
Теперь откройте окно редактора Visual Basic. Вы можете сделать это или, как выше, через СервисМакросМакросы…<Изменить>, или непосредственно через СервисМакросРедактор Visual Basic.
После последнего из записанных макросов (слов End Sub соответствующей подпрограммы) наберите, например, следующий текст:
-
Function МояПервая(x)
МояПервая=x^2+sqr(x)/x
End Function
Последняя строчка появится сама, без Вашего участия, поэтому позаботьтесь, чтобы она не оказалась набранной дважды.
Закройте окно Редактора Visual Basic и вернитесь в окно Excel. Теперь вы можете убедиться, что в Мастере функций существует раздел "Определенные пользователем", а в нем функция "МояПервая", созданная Вами. Выбрав её и нажав <ОК>, вы получите перед собой окно Вашей функции с полем аргумента «x». Введите в это поле какое-либо значение (например, 4) и Вы получите результат (16,5) в соответствии с определенной Вами функцией. Нажмите <ОК>, и результат окажется в той ячейке листа Excel, которая была выделена перед обращением к мастеру функций.
Задание.
Определите, как описано выше, еще несколько Ваших собственных функций, с разными именами, с разным числом аргументов и заставьте их работать на Вас. Вы вполне можете ограничиться Вашими знаниями языка Quick Basic, несмотря на то, что программируете функции в Visual Basic.
Ниже мы рассмотрим несколько конкретных примеров функций, полезных для расчетов в Excel.
4.3. Вычисление определенного интеграла
В Excel 2000 среди стандартных математических функций отсутствуют функции, вычисляющие определенный интеграл. Создадим такую функцию сами.
Пусть нам необходимо вычислить интеграл .
Для приближенного вычисления определенного интеграла используем, как и в п. 3.4, метод трапеций. В методе трапеций приближенное значение интеграла вычисляется по итоговой формуле:
,
где h – ширина интервала значений аргумента x, после разбиения промежутка интегрирования на n равных частей, yi =f(xi) – значения функции на границах этих интервалов.
Соответствующую подпрограмму-функцию создадим так же, как в предыдущем параграфе.
-
Function IntTrap(a, b)
Dim i, n As Integer
n = 128
h = (b - a) / n
s = (f(a)+f(b))/2
For i = 1 To n - 1
x=a + i * h
s = s + f(x)
Next i
IntTrap = h * s
End Function
Здесь оператор Dim… явно описывает по типу "целые" (Integer) переменную n – число разбиений на интервалы величиной h промежутка интегрирования от a до b и вспомогательную переменную i, которая является параметром цикла For…Next i и изменяется в этом цикле с шагом 1.
В данной подпрограмме f(x) является подынтегральной функцией, от которой вычисляется определенный интеграл. Эта функция также должна быть задана подпрограммой. Если, например, f(x)=x2, то:
-
Function f(x)
f = x ^ 2
End Function
После написания этих двух функций в редакторе Visual Basic в Мастере функций, в разделе «определенные пользователем» появятся две соответствующие функции IntTrap и f. Для вычисления интеграла надо выбрать функцию IntTrap и задать параметры a и b – пределы интегрирования. Если нужно вычислить определенный интеграл от другой функции, измените функцию f(x) в редакторе Visual Basic. Функцию IntTrap менять не надо.
Приведем также пример подпрограммы-функции, вычисляющей определенный интеграл методом Симпсона. Этот метод более точный, чем метод трапеций. В методе Симпсона интеграл вычисляется по следующей итоговой формуле:
S=[ y0 + yn + 4*(y1 + y3+ … yn-1)+ 2*(y2 + y4 + … yn-2)] * h / 3
Соответствующая подпрограмма может быть написана так:
-
Function IntSimp(a, b, Optional n As Integer =128)
Dim i As Integer
h = (b - a) / n
s1 = 0: s2 = 0
For i = 1 To n - 1 Step 2
x=a + i * h
s1 = s1 + f(x)
Next i
For i = 2 To n - 2 Step 2
x=a + i * h
s2 = s2 + f(x)
Next x
IntSimp = (f(a) + f(b) + 4* s1 + 2 * s2) * h / 3
End Function
В этой подпрограмме-функции в число параметров введено число интервалов разбиения промежутка интегрирования, n. Этот параметр описан как целое число (Integer), он является необязательным (Optional) и ему назначено значение =128 по умолчанию. В результате Вы можете изменять точность вычисления интеграла, меняя значение параметра n в Мастере функций, а можете вообще не вводить этот параметр, тогда его значение останется равным 128.