- •Программирование в 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.1.5. Метод итераций (метод последовательных приближений).
Одним из наиболее распространенных методов уточнения корней уравнения при решении инженерных задач является итерационный метод или метод последовательных приближений. Метод простой итерации используется для решения нелинейного уравнения с выделенным линейным членом вида
x=U(x), |
(4.4) |
и состоит в построении последовательности х, начиная от некоторого заданного начального значения х по правилу
Xn+1=U(Xn) , n=0, 1, 2, 3… |
(4.5) |
Если U(x) - непрерывная функция, а Xn- последовательность, которая сходится, то значение есть решение уравнения (4.4). Построение нескольких последовательных приближений за (4.5) приведено на рис 4.7.
Рис.4.7.
Преобразование решения с целью выделения линейного члена можно провести разными путями. Например, если f(x)=x2-c=0, то можно
а) прибавить к правой или левой части х: x=x2+x-c
б) поделить все составные на х: х=с/х и т.д.
Условия сходимости. Если |U'(x)|<1, то процесс сходится, если же |U'(x)|>1, то расходится. Неравенство надо проверять для всех х, вычисленных в ходе решения. Сходимость метода итераций зависит от выбора вида уравнения с выделенным линейным членом. При неудачном выборе можно получить расходящийся процесс.
Пример
Необходимо решить уравнения: x3+x=1000. Априорно известно, что корень находится в границах [9;10].
Найти корень уравнения с точностью =10-4.
Начальное решение можно записать в виде:
X=1000-x3 |
(a) |
Или |
|
X=(1000-x)1/3 |
(б) |
Проанализируем полученное уравнение.
Уравнение (а) не подходит, так как |U'(x)|=|-3x2|>1.
Для уравнения (б): |U'(x)|=|-1/3*(1000-x)-2/3|<1
Вычисляем последовательные приближения Xn по формуле Yn=1000-Xn; Xn+1=(Yn)1/3 (n=0, 1, 2, 3...).
Найденные значения (вычисленные с одним запасным знаком) приведены в таблице 4.1.
Таблица 4.1
-
n
Xn
Yn
0
10
990
1
9.6655
990.03345
2
9.96666
990.03345
3
9.96667
Исходя из того что |X3-X2|< , можно принять, х= 9.96667
4.2. Численное решение систем линейных алгебраических уравнений
4.2.1. Теоретические сведения
Пусть дана система n линейных алгебраических уравнений с n неизвест-ными:
a11*x1+ a12*x2 + ..... + a1n*xn =b1 a21*x1+ a22*x2 + ..... + a2n*xn =b2 ..... aN1*x1+ aN2*x2 + ..... + aNN*xN =bNN |
(4.6) |
или в матричном виде:
AX=b |
(4.7) |
Где:
-матрица коэффициентов,
- столбец свободных членов и столбец неизвестных
соответственно.
Коэффициенты системы (4.6) характеризуются двумя индексами. Первый индекс і - определяет номер сроки, второй -j - номер столбца. Решение системы (4.6) означает нахождение таких значений неизвестных, при подстановке которых в исходную систему любое из уравнений превращается в тождество. Если матрица A неособенная, то
, и система (4.6) имеет единственное решение.
Способы решения систем линейных уравнений (СЛР) в основном делятся на две группы:
1. Точные методы, которые представляют собой конечные алгоритмы для вычисления корней системы (правило Крамера, метод Гаусса, метод главных элементов, метод квадратных корней и прочие).
2. Итерационные методы, которые дают возможность получать корни системы с заданной точностью путем сходящихся бесконечных процессов (метод итераций, метод Зейделя, метод релаксации).