
- •1. Внутренняя сортировка данных методом подсчета. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •2. Внутренняя сортировка данных методом выбора. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •3. Внутренняя сортировка данных методом простых вставок. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •4. Внутренняя сортировка данных методом Шелла. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •5. Внутренняя сортировка данных методом «пузырька». Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •6. Внутренняя сортировка данных «быстрым» методом. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •7. Численное решение уравнения методом половинного деления (дихотомии). Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Метод хорд
- •9. Численное решение уравнения методом Ньютона (касательных). Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Метод Ньютона
- •10. Численное решение уравнения модифицированным методом Ньютона. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Модифицированный метод Ньютона
- •Модифицированный метод Ньютона (метод секущих)
- •Метод ньютона-рафсона
- •11. Численное решение уравнения методом секущих. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Условие сходимости
- •12. Численное решение уравнения методом простых итераций. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Метод простых итераций
- •13. Численное интегрирование методом прямоугольников. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Метод прямоугольников
- •Пример реализации
- •14. Численное интегрирование методом трапеций. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Метод трапеций
- •15. Численное интегрирование методом парабол. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Формула
- •Представление в виде метода Рунге-Кутта
- •Составная формула (формула Котеса)
- •16. Численное интегрирование методом Гаусса-Лежандра. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •17. Численное интегрирование методом Монте-Карло. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм. Интегрирование методом Монте-Карло
- •Обычный алгоритм Монте-Карло интегрирования
- •Геометрический алгоритм Монте-Карло интегрирования
- •Использование выборки по значимости
- •Оптимизация Применение в физике
- •18. Построение кривой по точкам. Интерполяционный полином Лагранжа. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Определение
- •Применения
- •Случай равномерного распределения узлов интерполяции
- •Погрешность интерполирования
- •Выбор узлов интерполяции
- •20. Построение кривой по точкам. Интерполяция кубическими сплайнами. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
- •Интерполяция кубическими сплайнами
- •Введение
- •Постановка математической задачи
- •Изложение метода
- •Метод прогонки
- •Пример: интерполирование неизвестной функции
- •Ошибка интерполяции
- •Пример: интерполяция синуса
- •Дискретное преобразование Фурье
- •Пример использования
- •Погрешность вычислений
- •Программная реализация
7. Численное решение уравнения методом половинного деления (дихотомии). Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.
Метод дихотомии имеет свое название от древнегреческого слова διχοτομία, что в переводе означает деление надвое. Именно поэтому данные метод имеет еще второе название: метод половинного деления. Его мы используем довольно часто. Допустим, играя в игру "Угадай число", где один игрок загадывает число от 1 до 100, а другой пытается его отгадать, руководствуясь подсказками "больше" или "меньше". Логично предположить, что первым числом будет названо 50, а вторым в случае если оно меньше - 25, если больше - 75. Таким образом, на каждом этапе (иттерации) неопределенность неизвестного уменьшается в 2 раза. Т.е. даже самый невезучий в мире человек отгадает загаданное число в данном диапазоне за 7 предположений вместо 100 случайных утверждений.
Метод половинного деления один из методов решения нелинейных уравнений и основан на последовательном сужении интервала, содержащего единственный корень уравнения F(x)=0 до того времени, пока не будет достигнута заданная точность Е. Метод используется при решении квадртных уравнений и уравнений высших степеней.
Пусть задан отрезок [а,b], содержащий один корень уравнения. Этот отрезок может быть предварительно найден с помощью шагового метода.
Дано нелинейное уравнение:
|
(4.1) |
Найти
корень уравнения, принадлежащий
интервалу [a,b],
с заданной точностью
.
Для уточнения корня методом половинного деления последовательно осуществляем следующие операции:
Делим интервал пополам:
В качестве нового интервала изоляции принимаем ту половину интервала, на концах которого функция имеет разные знаки (рис.4.4).
Рис. 4.4.
Для этого:
a) Вычисляем значение функции f(x) в точках a и t.
b) Проверяем: если f(a)f(t) < 0, то корень находится в левой половине интервала [a,b] (рис.4.4.а). Тогда отбрасываем правую половину интервала и делаем переприсвоение b=t.
c) Если f(a)f(t) < 0 не выполняется, то корень находится в правой половине интервала [a,b] (рис.4.4.б). Тогда отбрасываем левую половину и делаем переприсвоение a=t. В обоих случаях мы получим новый интервал [a,b] в 2 раза меньший предыдущего.
Процесс, начиная с пункта 1, циклически повторяем до тех пор, пока длина интервала [a,b] не станет равной либо меньшей заданной точности, т.е.
Схема алгоритма уточнения корней по методу половинного деления
Пример:
Решим
уравнение
методом
половинного деления. Графическим методом
находим отрезок
,
которому принадлежит искомый корень.
Так как
,
то принимаем
.
Ниже приведен пример программы на Си++, которая решает поставленную задачу.
Программа 1. Корень уравнения
#include <iostream>
#include <cmath>
using namespace std;
const double epsilon = 1e-2;
double f(double x)
{
return 4- exp(x) - 2*x^2;
}
int main()
{
double a, b, c;
a = 0;
b = 2;
while (b - a > epsilon){
c = (a + b) / 2;
if(f(b) * f(c) < 0)
a = c;
else
b = c;
}
cout << (a + b) / 2 << endl;
return 0;
}
Искомый
корень
.
Вычисления проводились с точностью
.
Промежуточные вычисления представлены в таблице ниже.
n |
an |
bn |
cn |
bn-cn |
1 |
0 |
1 |
0.5 |
0.5 |
2 |
0.5 |
1 |
0.75 |
0.25 |
3 |
0.75 |
1 |
0.875 |
0.125 |
4 |
0.875 |
1 |
0.9375 |
0.0625 |
5 |
0.875 |
0.9375 |
0.90625 |
0.03125 |
6 |
0.875 |
0.90625 |
0.890625 |
0.015625 |
7 |
0.875 |
0.890625 |
0.8828125 |
0.0078125 |
Достоинство метода половинного деления : более быстрая сходимость к заданной точности, чем у шагового. Недостаток: если на отрезке [а,b] содержится более одного корня, то метод не работает.
8. Численное решение уравнения методом хорд. Эффективность данного алгоритма. Привести фрагмент программы, поясняющий данный алгоритм.