- •Программирование в excel
- •Симферополь 2000
- •Факультет "Механизация сельского хозяйства" Программирование в excel
- •1. Основы программирования на vba
- •1.1. Создание, редактирование и запись программ
- •1.1.1. Запись макроса
- •1.1.2. Как найти макрос в проекте
- •1.1.3. Написание новой процедуры
- •Чем макрос отличается от процедуры
- •1.1.4. Процедуры типа Sub и Function
- •1.1.5. Закрытые и открытые процедуры
- •1.1.6. Использование значения, возвращаемого функцией
- •1.1.7. Выполнение процедуры Sub
- •1.1.8. Передача аргументов в процедуру
- •1.1.9. Именованные аргументы
- •1.1.10. Написание процедур для обработки событий
- •1.1.11. Где хранится код обработки события
- •1.1.12. Средства, ускоряющие написание программ
- •1.1.13. Как написать легкочитаемую программу
- •1.2. Переменные, константы и типы данных
- •1.2.1. Типы данных в Visual Basic
- •1.2.2. Объявление константы, переменной или массива
- •1.2.3. Объявление объектной переменной
- •1.2.4. Встроенные константы
- •1.3. Управляющие конструкции
- •1.3.1. Операторы ветвления
- •1.3.2. Операторы циклов
- •1.3.3. Вложение управляющих конструкций
- •1.3.4. Выход из циклов и процедур
- •1.4. Структура программы
- •2. Сортировка данных
- •2.1. Алгоритм сортировки обменами (алгоритм “пузырька”)
- •2.2. Алгоритм сортировки вставками
- •2.3. Алгоритм сортировки выбором элемента
- •2.4. Алгоритм быстрой сортировки (метод Хоора)
- •2.5. Алгоритм пирамиды (метод Уильямса-Флойда)
- •2.6. Учебные задачи по программированию сортировки данных
- •3. Работа vba с объектами Excel
- •3.1. Как получить справку по Visual Basic для Microsoft Excel
- •3.2. Объекты Microsoft Excel
- •3.3. Работа с объектом Application
- •3.4. Работа с объектом Workbook
- •3.4.1. Открытие рабочей книги
- •3.4.2. Закрытие рабочей книги
- •3.4.3. Создание и сохранение рабочей книги
- •3.5. Работа с объектом Range
- •3.6. Строковые ссылки в стиле а1 или имена диапазонов
- •3.6.1. Числовые индексы строк и колонок
- •3.6.2. Свойство Offset
- •3.6.3. Свойства CurrentRegion и UsedRange
- •3.6.4. Организация циклов для перебора ячеек диапазона
- •3.6.5. Применение свойства Address для отладки кода, работающего с объектом Range
- •3.7. Работа с событиями
- •3.7.1. Включение и отключение обработки событий
- •3.7.2. Использование событий, связанных с рабочими листами
- •3.7.3. События на уровне рабочего листа
- •3.7.4. События на уровне диаграммы
- •3.7.5. События на уровне рабочей книги
- •3.7.6. События на уровне приложения
- •3.7.7. Модули классов и события
- •4. Численные методы математики
- •4.1. Методы решения нелинейных уравнений
- •4.1.2. Метод деления отрезка пополам (метод дихотомии).
- •4.1.3. Метод Ньютона (касательных).
- •4.1.4. Метод хорд (секущих).
- •4.1.5. Метод итераций (метод последовательных приближений).
- •4.2.1. Теоретические сведения
- •4.2.2. Метод Крамера
- •4.2.3. Метод Гаусса
- •4.2.6. Метод Зейделя
- •4.3. Обработка экспериментальных данных
- •4.3.1. Задачи, которые возникают при обработке экспериментальных данных.
- •4.3.2. Интерполяция
- •4.3.2.1. Интерполяция функций
- •4.3.3.2. Определение параметров эмпирической формулы
- •4.4. Методы численного интегрирования
- •4.4.1. Метод трапеций
- •4.4.2. Метод Симпсона
- •4.4.3. Оценка точности формул численного интегрирования. Выбор шага интегриров-ания
- •4.4.3.1. Выбор шага интегрирования по оценке остаточного члена (ошибки)
- •4.4.3.2. Выбор шага интегрирования с помощью двойного пересчета
- •4.5.1. Теоретические сведения
- •4.5.2. Одноступенчатые методы
- •4.5.2.1. Решение с помощью рядов Тейлора
- •4.5.2.2 Метод Эйлера
- •4.5.2.3. Модифицированный метод Эйлера
- •4.5.2.4. Метод Эйлера-Коши
- •4.5.2.5 Метод Рунге-Кутта
- •4.5.3. Многоступенчатые методы
- •4.5.3.1. Методы прогноза и коррекции
- •4.6. Методы решения линейной краевой задачи для обыкновенных дифференциальных уравнений
- •4.6.1. Постановка задачи
- •4.6.2. Метод конечных разностей
- •4.6.3. Метод прогонки
- •4.6.4. Алгоритм решения краевой задачи методом прогонки.
4.4.3.2. Выбор шага интегрирования с помощью двойного пересчета
Определение шага интегрирования по величине остаточного члена приводит к громоздким вычислениям. Поэтому можно использовать следующий прием.
По выбранной формуле (методу) интеграл вычисляется два раза: сначала с каким-то шагом h, а потом с шагом h/2, то есть удваивают число n. Обозначим последовательность вычислений как Sn и S2n и сравним их.
Если |Sn-S2n|<, где - допустимая погрешность, то считают, что Sn=S2n.
Если |Sn-S2n|>, тогда расчет повторяют с шагом h/4 и сравнивают |S2n-S4n| и т.п. В роли начального шага можно рекомендовать где: k=2 для формулы трапеций, k=4 - для формулы Симпсона.
4.5. Методы численного интегрирования обыкновенных дифференциальных уравнений
4.5.1. Теоретические сведения
Дифференциальное уравнение устанавливает связь между независимыми переменными, неизвестными (искомыми) функциями и их производными.
Решение дифференциального уравнение n-го порядка
Y(n) = f( X, Y, Y', Y", ..., Y(n-1) ) |
(4.36) |
состоит в отыскании функции Y=Y(X), которая удовлетворяет (4.36) и начальным условиям:
Y(Xo)=Yo; Y'(Xo)=Y'o; Y"(Xo)=Y"o;...,Yo(n-1) (Xo)=Yo(n-1), |
(4.37) |
где Yo, Y'o, Y"o,...,Yo(n-1) - заданные числа. Такая задача называется задачей Коши.
Обыкновенное дифференциальное уравнение (ОДУ) первого порядка устанавливает связь между функцией одной переменной и ее производной в виде:
Y'=f(X,Y) |
(4.38) |
Начальное условие для ОДУ имеет вид:
Y(X0)=Y0 |
(4.39) |
Геометрическое содержание решения этой задачи состоит в нахождении интегральной кривой Y=Y(X), которая проходит через заданную точку А(X0,Y0). Уравнение (4.38) устанавливает связь между координатами и производной от функции в заданной точке в системе координат Y-X. Итак, для любой точки по (4.38) возможно вычислить производную, то есть тангенс угла наклона касательной к кривой Y=Y(X). Иначе говоря, уравнение (4.38) можно рассматривать как определение кривой через ее производную.
Ч исленное решение задачи Коши состоит в нахождении значений Y1,Y2,...,Yn в точках X1=X0+h, X2=X0+2h,..., Xn=X0+nh отрезка [a,b], где h – фиксированное приращение аргумента или шаг интегрирования, X0=a, Xn=d. Нанося точки (X0,Y0), (X1,Y1),..., (Xn,Yn) на координатную плоскость и соединив их отрезками прямой, Рис.4.19
получим ломаную линию, которая носит название ломаной Эйлера - приблизительное изображение искомой кривой (рис.4.19).
Этот метод решения дифференциального уравнения называется методом Эйлера. Это - простейший метод, и он обладает большим количеством недостатков. Мы стараемся описать кривую отрезками прямой, что может приводить к заметным погрешностям (как, например, на рис.4.19) Очевидно, что каким-нибудь способом необходимо учитывать кривизну искомого решения. Для этого разработан ряд методов, которые подразделяются на два класса.
1). Одноступенчатые методы, в которых используется только информация о искомой кривой в одной точке и не делаются итерации. Одним из таких методов является решение уравнений с помощью рядов Тейлора. Практически удобными методами являются методы Рунге-Кутта (3-го и 4-го порядка точности).
2). Многоступенчатые методы, в которых используется информация о кривой как минимум в двух точках по результатам применения одношаговых методов и затем применяется итерационная процедура. К этим методам принадлежат методы прогноза и коррекции.