- •Содержание
- •Лабораторная работа №1 вычисление значения функции sin(X), разложенной в ряд
- •Теоретические основы
- •Сортировка массива методом прямого выбора
- •Сортировка массива методом прямого обмена (пузырьковым методом)
- •Сортировка массива методом прямого включения
- •Шейкерная сортировка
- •Сортировка массива с помощью включений с уменьшающимися расстояниями (метод Шелла)
- •Сортировка разделением (быстрая сортировка)
- •Метод Горнера
- •Задание
- •Контрольные вопросы
- •Теоретические основы
- •Метод деления отрезка пополам (метод бисекции)
- •Метод простой итерации
- •Метод Ньютона
- •Многомерная минимизация Метод градиентного спуска
- •Метод Хука–Дживса
- •Задание
- •Контрольные вопросы Приложение 1 условные обозначения элементов блок–схем алгоритмов
- •Литература
Задание
Написать программу решения системы уравнений методом Гаусса, состоящей из n уравнений (n – задается преподавателем).
Пример для самопроверки:
Ответ:
Контрольные вопросы
Лабораторная работа №7 ПРИБЛИЖЕННОЕ РЕШЕНИЕ УРАВНЕНИЯ (x)=0
Цель работы: Написать программу для решения уравнений вида (x)=0 итерационными методами
Теоретические основы
Задача нахождения корней нелинейных уравнений вида f(x)=0 встречается в различных областях научных исследований (здесь f(х) – некоторая непрерывная функция.) Нелинейные уравнения можно разделить на два класса – алгебраические и трансцендентные. Алгебраическими уравнениями называются уравнения, содержащие только алгебраические функции (целые, рациональные, иррациональные). В частности, многочлен является целой алгебраической функцией. Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и др.), называются трансцендентными.
Методы решения нелинейных уравнений делятся на прямые и итерационные. Прямые методы позволяют записать корни в виде некоторого конечного соотношения (формулы). Из школьного курса алгебры известны такие методы для решения тригонометрических, логарифмических, показательных, а также простейших алгебраических уравнений.
Однако встречающиеся на практике уравнения не удается решить такими простыми методами. Для их решения используются итерационные методы, т. е. методы последовательных приближений. Алгоритм нахождения корня уравнения с помощью итерационного метода состоит из двух этапов: а) отыскания приближенного значения корня или содержащего его отрезка; б) уточнения приближенного значения до некоторой заданной степени точности.
Приближенное
значение корня (начальное приближение)
может быть найдено различными способами:
из физических соображений, из решения
аналогичной задачи при других исходных
данных, с помощью графических методов.
Если такие априорные оценки исходного
приближения провести не удается, то
находят две близко расположенные точки
а
и b,
в которых непрерывная функция f(x)
принимает значения разных знаков, т. е.
f(a)f(b)<0,
В этом случае между точками а
и b
есть по крайней мере одна точка, в которой
f(x)=0.
В качестве начального приближения х0
можно принять середину отрезка [а,
b],
т. е.
.
Итерационный процесс состоит в последовательном уточнении начального приближения х0. Каждый такой шаг называется итерацией. В результате итераций находится последовательность приближенных значений корня х1, х2, ..., хn. Если эти значения с ростом n приближаются к истинному значению корня, то говорят, что итерационный процесс сходится.
Ниже рассматриваются некоторые итерационные методы решения трансцендентных уравнений.
Метод деления отрезка пополам (метод бисекции)
Это
один из простейших методов нахождения
корней нелинейных уравнений. Он состоит
в следующем. Допустим, что удалось найти
отрезок [а,
b],
в котором расположено искомое значение
корня х
= с,
т. е.
.
В качестве начального приближения корня
с0
принимаем середину этого отрезка, т. е.
.
Далее исследуем значения функции f(х)
на концах отрезков [а,
c0]
и [c0,
b],
т. е. в точках а,
c0,
b.
Тот из них, на концах которого
f(х)
принимает
значения разных знаков, содержит искомый
корень; поэтому его принимаем в качестве
нового отрезка. Вторую половину отрезка
[а,
b],
на которой знак f(х)
не меняется,
отбрасываем. В качестве первой итерации
корня принимаем середину нового отрезка
и т. д. Таким образом, после каждой
итерации отрезок, на котором расположен
корень, уменьшается вдвое, т. е. после n
итераций он сокращается в 2n
раз.
Пусть
для определенности
(рис. 1). В качестве начального приближения
корня примем
.
Поскольку в рассматриваемом случае
f(c0)<0,
то
,
и рассматриваем только отрезок [c0,
b].
Следующее приближение:
.
При этом отрезок [c1,
b]
отбрасываем, поскольку
и
т. е.
.
Аналогично находим другие приближения
и т.д.
Рисунок 1 – Метод деления отрезка пополам
Итерационный
процесс продолжаем до тех пор, пока
значение функции f(x)
после n–й
итерации не станет меньшим по модулю
некоторого заданного малого числа е,
т. е.
.
Можно также оценивать длину полученного
отрезка: если она становится меньше
допустимой погрешности, то счет
прекращается.
Метод деления отрезка пополам довольно медленный, однако он всегда сходится, т. е. при его использовании решение получается всегда, причем с заданной точностью.
