- •Программирование в 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. Методы численного интегрирования
Численное интегрирование - это вычисления определенного интеграла по ряду численных значений подынтегральной функции:
(4.27)
при условии, что a и b – конечные, и f(x) является непрерывной функцией x на всем интервале a<=x<=b. Общий подход к решению задачи такой:
Определенный интеграл I представляет собой площадь, ограниченную кривой f(x), осью Х и ординатами в точках x=a и x=b.
Мы будем вычислять I, разбивая интервал от a до b на множество меньших интервалов, находить приблизительную площадь каждой "полосы", получающейся при такой разбивке и суммировать площади этих полос.
Чем меньше интервал разбивки, тем точнее будет вычислена интервальная сумма. При этом значительно увеличится количество вычислений. Поэтому на практике приходится ограничиваться конечной разбивкой интервала интегрирования функции, допуская при этом некоторую ошибку.
Разнообразие методов численного интегрирования обусловлено стратегией выбора точек разбивки, что обеспечивает в каждом конкретном случае минимально возможную ошибку. Возможны два способа выбора точек разбивки исходного интервала. Первый способ - число интервалов фиксируют заранее, второй - число и размеры интервалов определяются в процессе вычисления, исходя из требований заданной точности. В обоих случаях исходная функция на каждом интервале аппроксимируется зависимостью, например, линейной или квадратичной.
Численное интегрирование выполняют по квадратурным формулам:
.
Коэффициенты аk и абсциссы хk можно получить разыми способами:
1. По формулам Ньютона-Котеса (формулы точны для многочленов степени n).
2. По формулам Гаусса (формулы точны для многочленов степени 2n-1, то есть обеспечивают более высокую точность для функций, имеющих производные высоких порядков).
3. Для функции с кусочно-непрерывной 1-й производной лучше применять метод трапеций (частный случай формул Ньютона-Котеса)
4. По обобщениям формул Гаусса, точным для тригонометрических и специальных функций.
Повторное применение методов численного интегрирования позволяет находить кратные (двойные, тройные) интегралы.
Квадратурные формулы Ньютона-Котеса основаны на аппроксимации:
,
где
,
y(xk) – значения функции для n+1 равноотстоящих значений xk=x0+kx (k=0…n). (Число ноль-факториал 0! равно 1).
Формула Ньютона-Котеса является точной, если y(x) – многочлен степени n.
Частными случаями формулы Ньютона-Котеса являются:
-
Формула
1. Правило трапеций
(n=1)
1/2*X*(Y0+Y1)
2. Правило Симпсона
(n=2)
1/3*X*(Y0+4Y1+Y2)
3. Правило Уэддля
(n=6)
3/10*X*(Y0+5Y1+Y2+6Y3+Y4+5Y5+5Y6)
4.4.1. Метод трапеций
Метод трапеций основан на том, что график подынтегральной функции на каждом отрезке разбивки заменяется стягивающей его хордой, и площадь, ограниченная интервалом разбивки [Xi-1; Xi] заменяется площадью трапеции:
, (4.28)
где правая часть есть площадью трапеции (см. рис.4.16).
Получим формулу (4.28), подставив в качестве подинтегральной функции уравнение прямой:
Для двух точек прямой справедливо:
, откуда .
Подставив значения коэффициентов а и b в выражение для интеграла, получим уравнение (4.28).
Если: (Xi-Xi-1)=(b-a)/n=h, тогда для определенного интеграла применимо следующее приблизительное значение:
Рис.4.16
, (4.29)
или:
, где h=(b-a)/n. (4.30)
Формула (4.30) называется формулой трапеции для численного интегрирования. Для пользования ею необходимо знать значения подынтегральной функции в точках Хо;Х1;Х2...Хn.
Если подынтегральная функция задана графически, тогда эти значения считываются с графика, а если она задается аналитически, тогда f(Xo),f(X1),...f(Xn) находятся путем подстановки в подынтегральную функцию абсцисс Хо,Х1...Хn.
Б лок-схема метода приведена на рис.4.17.