- •Программирование в 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.1. Методы решения нелинейных уравнений
4.1.1. Теоретические сведения.
Любое уравнение с одним неизвестным может быть записано в виде:
f(x)=0, |
(4.1) |
где f(x)- какая-либо функция аргумента x.
Решение уравнения (4.1) заключается в том, чтобы найти такие значения аргумента x, при подстановке которых оно превратилось бы в тождество. Это значение независимой переменной называется корнем уравнения.
Вычисление корней алгебраических и трансцендентных уравнений вида (4.1) состоит из нескольких этапов. Сначала определяют, какие корни надо найти, например, только действительные ли только мнимые и тому подобное. Потом определяют области, которые содержат по одному корню уравнения (4.1) – локализация решений уравнения. Далее применяют какой-нибудь вычислительный алгоритм, находят выделенный корень с нужной точностью - уточнение (вычисление) корней. На заключительном этапе проводят сверку полученных результатов.
Локализация решений уравнения.
При решении инженерных задач локализация решений уравнения и выбор начального приближения поиска корня уравнения (4.1) часто проводится, исходя из физического понимания. Например, при расчете температуры смесей известно, что корень больше меньшего значения температуры и меньше наибольшего значения из всех составных смеси.
Локализация решений может проводиться путем анализа функции f(x) и ее производных, путем графического построения зависимости y=f(x).
В основе первого способа используется следующее положение. Если на концах некоторого интервала изменения аргумента x непрерывная и монотонная функция f(x) принимает разные знаки, то на рассмотренном интервале находится действительный корень уравнения (4.1).
Второй способ заключается в том, что строится график функции и определяются точки его пересечения с осью абцисс, которые с точностью построения графика соответствуют корням уравнения f(x)=0.
Уточнение корней.
После того, как найдено приблизительное значение корня или определенные границы его расположения, можно различными методами вычислить корень с разной степенью приближения к точному решению. Рассмотрим некоторые из этих методов.
4.1.2. Метод деления отрезка пополам (метод дихотомии).
Самым простым и надежным алгоритмом уточнения корня на отрезке |a, b|, если f(x) - непрерывная функция и f(a)>0, f(b)<0 , является метод деления отрезка пополам (иллюстрация на рис.4.1, алгоритм – рис.4.2). Действительно, середина отрезка служит приближением к корню уравнения (4.1) с точностью <b-a/2. В середине отрезка x1=(a+b)/2 определяют знак функции f(x1), потом выбирают ту половину отрезка, на концах которого функция f(x) принимает значения разных знаков, и деление повторяют. Если нужно найти корень с точностью , то деление отрезка пополам продолжают, пока длина отрезка не станет меньше 2. Тогда середина последнего отрезка дает значение корня с необходимой точностью. Этот метод обладает относительно невысокой скоростью схождения и при вычислении корня с высокой точностью требует значительного объема вычислений. Поэтому он чаще всего используется для локализации корней, то есть грубого поиска, для уточнения корней используют более эффективные методы.
Рис.4.1. Рис.4.2.
Пример:
Методом деления пополам найти корень уравнения f(x)=x4+x2-x-0.6=0, который находится в интервале [0.5; 1.3] , с точностью =0.15.
Определим значения функции f(x) на концах интервала: f(0.5)=-0.79; f(1.3)=5.35. f(0.5)>0, f(1.3)<0. Значит корень уравнения находится в этом интервале. Поделим отрезок пополам: X1=(0.5+1.3)/2= 0.9 и вычислим значение функции в найденной точке: f(0.9)=0.61. Так как f(0.5)>0, f(0.9)<0, то выбираем интервал [0.5; 0.9]. Поделив новый интервал пополам, получим X2=0.7 и f(0.7)=-0.4. Таким образом, корень находится в интервале [0.7; 0.9]. Так как длина отрезка меньше 2 ,то середина дает значение корня: x= 0.8.