- •Часть 2
- •Содержание
- •Особенности применения указателей
- •Связь указателей с массивами
- •Декларация многомерного массива:
- •Указатели на указатели
- •Динамическое размещение данных
- •Задание №1. Рекурсивные функции
- •1.1. Краткие теоретические сведения
- •1.2. Пример выполнения задания
- •1.2.1. Реализация задания в оконном приложении
- •1.2.2. Реализация задания в консольном приложении
- •1.3. Индивидуальные задания
- •Задание №2. Динамическая структура стек
- •2.1. Краткие теоретические сведения
- •2.2. Пример выполнения задания
- •2.2.1. Реализация задания в оконном приложении
- •2.2.2. Реализация задания в консольном приложении
- •2.3. Индивидуальные задания
- •Задание №3. Динамическая структура очередь
- •3.1. Краткие теоретические сведения
- •Создание первого элемента
- •Добавление элемента
- •Просмотр списка
- •Алгоритм удаления элемента в списке по ключу
- •3.2. Пример выполнения задания
- •3.2.1. Реализация задания в оконном приложении
- •3.2.2. Реализация задания в консольном приложении
- •3.3. Индивидуальные задания
- •Задание №4. Обратная польская запись
- •4.1. Краткие теоретические сведения
- •4.2. Пример выполнения задания
- •4.3. Индивидуальные задания
- •Задание №5. Нелинейные списки
- •5.1. Краткие теоретические сведения
- •Функция просмотра элементов дерева
- •Функция освобождения памяти, занятой деревом
- •5.2. Пример выполнения задания
- •5.3. Индивидуальные задания
- •Задание №6. Алгоритмы поиска корней уравнений
- •6.1. Краткие теоретические сведения
- •Метод простой итерации
- •Метод Ньютона (метод касательных)
- •Метод секущих
- •Метод Вегстейна
- •Метод деления отрезка пополам
- •6.2. Пример выполнения задания
- •6.3. Индивидуальные задания
- •Задание №7. Аппроксимация функций
- •7.1. Краткие теоретические сведения
- •Интерполяционный многочлен Ньютона
- •Линейная и квадратичная интерполяции
- •Интерполяционный многочлен Лагранжа
- •7.2. Пример выполнения задания
- •7.3. Индивидуальные задания
- •Задание №8. Алгоритмы вычисления интегралов
- •8.1. Краткие теоретические сведения
- •Формула средних
- •8.2. Пример выполнения задания
- •8.3. Индивидуальные задания
- •Задание №9. Алгоритмы поиска и сортировки в массивах
- •9.1. Краткие теоретические сведения
- •9.1.1. Алгоритмы поиска
- •Функция поиска всех элементов целочисленного динамического массива а размера n, равных значению х, может иметь следующий вид:
- •Функция поиска одного значения х в целочисленном динамическом массиве а размера n может иметь следующий вид:
- •Else // Вывод сообщения, что элемент не найден
- •9.1.2. Алгоритмы сортировки
- •Функция сортировки элементов целочисленного динамического массива а размера n может иметь следующий вид:
- •Функция сортировки элементов целочисленного динамического массива а размера n может иметь следующий вид:
- •Рекурсивная функция сортировки элементов целочисленного динамического массива а размера n может иметь следующий вид (begin – первый элемент массива, end – последний элемент массива):
- •9.2. Индивидуальные задания
- •Литература
- •Учебное издание
- •Часть 2
- •220013, Минск, п. Бровки, 6
Задание №6. Алгоритмы поиска корней уравнений
Цель работы:изучить алгоритмы поиска корней нелинейных алгебраических уравнений с заданной точностью.
6.1. Краткие теоретические сведения
Одним из наиболее часто используемых вычислительных методов является метод итераций и различные его модификации.
Итерационные методыоснованы на построении сходящейся к точному решениюx*бесконечной рекуррентной последовательностиx0,x1, …,xkx* приk.
Последовательность называется рекуррентнойпорядкаm,если каждый следующий ее член выражается черезmпредыдущих по некоторому правилу:
xk = (xk1, xk2, …, xkm). (6.1)
Такой метод называется m-шаговым. Для его реализации требуется задатьmпервых членов {x0,x1, …,xm1}, называемыхначальнымприближением. Зная начальное приближение, по формуле (6.1) последовательно находятxm,xm+1, …,xk, …. Процесс получения следующегоk-го члена через предыдущие называетсяk-йитерацией. Итерации выполняются до тех пор, пока очередной членxk не будет удовлетворять заданной точности, т.е. пока не выполнится условие | xkxk1| <, где– некоторая заданная малая величина. В качестве искомого решения берут последний член последовательностиxk, при котором выполнилось указанное неравенство.
Чтобы использовать итерационный метод, исходную задачу преобразуют к виду, разрешенному относительно х:
x=(x). (6.2)
При этом точное решение исходной задачи х* является и решением (6.2).
Используем выражение (6.2) в качестве рекуррентной формулы (m = 1):
xk=(xk1).
Далее, задав одно х0 (начальное приближение), последовательно находим x1,x2, …,xk. Если полученная таким образом последовательность сходится к некоторому конечному пределу, то этот предел совпадает с точным решениемх*.
Математической моделью многих физических процессов является функциональная зависимость y=f(x). Поэтому задачи исследования различных свойств функцииf(x) часто возникают в инженерных расчетах. Одной из таких задач является нахождение корней этого уравнения на заданном отрезке [a,b], т.е. таких значений х, при которыхf(x) = 0.
На рис. 6.1 представлены три наиболее часто встречающиеся ситуации:
а) кратныйкорень:![]()
б) простойкорень:![]()
в) вырожденныйкорень:
не существует,
.

Рис. 6.1
Значения корней x1*иx3*(назовем ихособенными) совпадают с точкой экстремума функции, и для их нахождения можно использовать либо методы поиска минимума функции, либо алгоритм поиска интервала, на котором находится «особенный» корень.
Обычно для нахождения корней уравнения применяются численные методы, и этот поиск осуществляется в два этапа.
1. Приближенное определение местоположения – этап отделения корней (нахождение грубых корней).
2. Вычисление выбранного корня с заданной точностью .
Первая задача чаще всего решается графическим методом: на заданном отрезке [a,b] вычисляется таблица значений функции с некоторым шагомh, строится ее график, и определяются интервалы (i,i) – в дальнейшем [a,b] длинойh, на которых находятся корни.
Общий алгоритм поиска особенных корней
1. Начало цикла для x, изменяющегося отaдоbс шагомh(h).
2. Если f(x) <, тоxn– начало отрезка, на котором вероятно существует особенный корень уравненияf(x) – продолжаем цикл.
3. Если f(x) >, тоxk– конец искомого отрезка.
4. Выводим на экран полученный интервал.
5. Конец цикла.
Общий алгоритм поиска простых корней
1. Начало цикла для x, изменяющегося отaдоbс шагомh.
2. Если f(x)f(x+h) < 0, то на отрезке [x,x + h] существует простой корень уравненияf(x).
3. Обращаемся к созданной функции, реализующей выбранный алгоритм, параметрами которой являются: интервал [x,x + h], на котором существует корень, вид функцииf(x), заданная точность.
4. Выводим на экран полученное значение.
5. Конец цикла.
Поиск простого корня с заданной точностью осуществляется одним из итерационных методов. В соответствии с общей методикой на найденном интервале выбираетсяmначальных значений (приближений)x0,x1, …,xm1, после чего последовательно выполняются вычисления до тех пор, пока не выполнится неравенство |x1 –x0| <(x0 – значение, найденное на предыдущем шаге,x1 – найденное значение). Значениеx1, при котором |x1 –x0| >, принимается в качестве приближенного значения корня.
Рассмотрим основные итерационные методы поиска корней.
