29
Численные алгоритмы. Численные алгоритмы: 2. решение алгебраических и трансцендентных уравнений, 3. решение систем линейных алгебраических уравнений, 4. решение систем обыкновенных дифференциальных уравнений, 5. решение уравнений в частных производных, 6. оптимизация, 7. обработка числовых данных. Алгоритмы типа «разделяй-и- властвуй» реализуются в задачах поиска корня алгебраических и трансцендентных уравнений, а также в задачах оптимизации.

Алгоритмы сортировки

  • Upload
    -

  • View
    431

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Алгоритмы сортировки

Численные алгоритмы. Численные алгоритмы:2. решение алгебраических и

трансцендентных уравнений, 3. решение систем линейных

алгебраических уравнений, 4. решение систем обыкновенных

дифференциальных уравнений,5. решение уравнений в частных

производных,6. оптимизация, 7. обработка числовых данных.

Алгоритмы типа «разделяй-и-властвуй» реализуются в задачах поиска корня алгебраических и трансцендентных уравнений, а также в задачах оптимизации.

Page 2: Алгоритмы сортировки

Решение алгебраических и трансцендентных уравнений Дано уравнение

где функция определена и непрерывна на отрезке a<x<b

Всякое значение ξ , обращающее в нуль (т.е. ) является корнем уравнения

Алгоритм решения:6. Отделение корней7. Уточнение приближенных значений

корней

0)( =xf

)(xf

0)( =ξf)(xf

A BX

F(x)

Page 3: Алгоритмы сортировки

Отделение корней производится разбиением интервала [a,b] на участки [a - x1 - x2 - x3- … - xn - b], на которых произведение f(x(i)*f(x(i+1))<0

x1

x2

x3

Уточняем значение корня на каждом из выделенных участков [x(i) - x(i+1)]

A BX

F(x)

Page 4: Алгоритмы сортировки

Корень нелинейного уравнения. Деление отрезка пополам.

Функция f(x) задана на отрезке [a,b] и имеет только один корень x*. ε, δ – малые значения, b>a.

Шаг1: Вычисляем значения функции f(x) на концах интервала - f(a), f(b).

Шаг2: Определяем середину интервала xср=(a+b)/2 и вычисляем в этой точке значение функции f(xср )

Шаг3: Вычисляем произведение – f(a)* f(xср ).

Если f(a)* f(xср )<0, то присваиваем b=xср, иначе присваиваем a=xср

Шаг4: Признак завершения счета. Если abs(b-a)<δ или

abs(f(b)) < ε и abs (f(a))< ε, то перейти к шагу 5, иначе перейти к шагу 2.

Шаг5: Вычисляем x*=(a+b)/2 и f(x*)

Page 5: Алгоритмы сортировки

a bxср

f(a)

f(b)f(xср)

a bxср

f(a)

f(xср)f(b)

a bxср

Page 6: Алгоритмы сортировки

Оптимизация

Поиск минимума функции одной переменной.

Поиск минимума функции нескольких переменных.

Page 7: Алгоритмы сортировки

Поиск минимума функции одной переменной: дихотомия

Функция F(x) задана на отрезке [a,b] и имеет только один минимум. ε, δ – малые значения, b>a.

Шаг1: Определяем середину интервала xср=(a+b)/2 , выделяем две точки на оси аргументов x1= xср – ε и x2= xср + ε .

Шаг2: Вычисляем в этих точках значения функции F(x1) и F(x2 ).

Шаг3: Сравниваем значения функции F(x1) и F(x2 ). Если F(x1) < F(x2 ), то присваиваем b= xср, иначе a= xср .

Шаг4: Завершение счета. Если abs(b-a)< δ или abs(F(b)) < ε и abs (F(a))< ε, то перейти к шагу 5, иначе перейти к шагу 2.

Шаг5: Вычисляем xmin=(a+b)/2 и F(xmin)

Page 8: Алгоритмы сортировки

ax1 xср x2 b

ax1 xср x2 b

ax1 xср x2

b

F(x1)

F(x2)

F(x2)

F(x1)

Page 9: Алгоритмы сортировки

Функция F(x) задана на отрезке [a,b] и имеет один минимум.

ε, δ – малые значения , b>a.

Поиск минимума функции одной переменной: деление отрезка пополам.

Page 10: Алгоритмы сортировки

F(x1) F(xср)

F(x1)<F(xср) Возможные положения минимума функции

a X1 Xср X2 b

F(x2)F(xср)

F(x1)>F(xср) Возможные положения минимума функции

F(x2)<F(xср)

a X1 Xср X2 b

F(x)2

F(x ср)

F(x1)>f(xср) Возможные положения минимума функции

F(x2)>F(xср)

A X1 Xср X2 B

Page 11: Алгоритмы сортировки

Шаг1: Определяем середину отрезка xср=(a+b)/2

Шаг2: Выделяем две точки x1= xср – abs(b-a)/4 и

x2= xср + abs(b-a)/4 . Шаг3: Вычисляем в этих точках значения

функции F(xср), F(x1) и F(x2 ). Шаг4: Сравниваем значения функции F(x1)

и F(xср ). Если F(x1) < F(xср ), то присваиваем b= xср, xср=x1 и переходим к шагу 6, иначе переходим к шагу 5.

Шаг5: Сравниваем значения функции F(x2) и F(xср ). Если F(x2) < F(xср ), то присваиваем a= xср, xср=x2, иначе присваиваем a= x1, b= x2

Шаг6: Завершение счета. Если abs(b-a)< δ или (abs(F(b)) < ε и abs (F(a))< ε, то перейти к шагу 7, иначе перейти к шагу 2.

Шаг7: Вычисляем xmin=(a+b)/2 и F(xmin)

Page 12: Алгоритмы сортировки

F(X1)< F(Xср),

Xср

X1, X2

F(Xср), F(X1),F(X2)

F(X2)< F(Xср),

abs(b-a)< δ

b= Xср, Xср=X1

a= Xср, Xср=x2 a= X1, b=X2

Xmin, F( Xmin)

Page 13: Алгоритмы сортировки

a bx1 xср x2

F(x1)

F(xср)

F(x2)

a b

a bx1 xср x2

F(x1)

F(xср)

F(x2)

x1 x2

Page 14: Алгоритмы сортировки

Поиск минимума функции одной переменной: Золотое сечение.

Геометрическая интерпретация этого принципа заключается в следующем. Дан отрезок AB

Отношение отрезков определяется соотношением AC/AB=CB/AC, т.е. отношение большего отрезка к целому равно отношению меньшего отрезка к большему отрезку. Если принять целый отрезок АВ=1, то АС≈0.62, а СВ≈0.38.

Пусть функция F(x) задана на отрезке [a,b] и имеет только один минимум.

ε, δ – малые значения.

А С В

Page 15: Алгоритмы сортировки

Шаг1: Задаем коэффициенты k2=0.62, k1=0.38, интервал [a,b] и отрезок L=b-a.

Шаг2: Выделяем две точки на оси аргументов v=L*k1 и w=L*k2 .

Шаг3: Если b-a < δ , то перейти к шагу 9, иначе перейти к шагу 4

Шаг4: Вычисляем значения F(v) и F(w). Шаг5: Сравниваем значения F(w) и F(v ).

Если F(w) < F(v ), то присваиваем a=v, v=w и w:=a+(b-a)*k2; иначе переходим к шагу 7.

Шаг6: Присваиваем F(v )= F(w) и вычисляем новое значение F(w) и переходим к шагу 3.

Шаг7: Присваиваем b=w, w=v и v:=a+(b-a)*k1.

Шаг8: Присваиваем F(w )= F(v) и вычисляем новое значение F(v) и переходим к шагу 3.

Шаг9: Вычисляем xmin=(a+b)/2 и F(xmin)

Page 16: Алгоритмы сортировки

F(w)

F(v )

F(v)>F(w) Возможные положения минимума функции

a V W b

F(w)

F(v )

F(v)<F(w) Возможные положения минимума функции

a V W b

Page 17: Алгоритмы сортировки

a V W

F(v)

a V W b

a V W b

F(w)

F(v) F(w)

bWV

Page 18: Алгоритмы сортировки

Нахождение минимума многомерной функции.

поверхность

уровни Проекции линий уровней на плоскость

Целевая функция – функция, описывающая (n+1)-мерную поверхность.

Page 19: Алгоритмы сортировки

Алгоритм покоординатного спуска Шаг 1: Фиксируем значение y1. Функция

F(x,y) зависит только от x - F(x,y1) Шаг 2: находим минимум F(x,y1) в точке x1. Шаг 3:Фиксируем значение x1. Функция

F(x,y) зависит только от y - F(x1,y) Шаг 4: находим минимум F(x1,y) в точке y2. Шаг 5: Фиксируем значение y2. Функция

F(x,y) зависит только от x - F(x,y2) Шаг 6: находим минимум F(x,y2) в точке x2. Шаг 7:Фиксируем значение x2. Функция

F(x,y) зависит только от x - F(x2,y) Шаг 8: находим минимум F(x2,y) в точке y3. Условия выхода: Значения функции F(x,y) на двух соседних

итерациях меньше малого числа ε Интервал между локальными минимумами

на двух соседних итерациях меньше малого числа δ

Page 20: Алгоритмы сортировки

Ввод стартовой точки

Вычисление минимума f(x,y) по направлению y

Вычисление минимума f(x,y) по направлению x

Проверка на глобальный минимум

да нет

выход

Page 21: Алгоритмы сортировки

Вычисление минимума по направлению

Фиксирование значения одного из параметров целевой функции f(x,y)

Обращение к процедуре поиска минимума функции

одной переменной (деление отрезка пополам)

Функция f(x,y) записывается как function

Возврат в вызывающую программу

Page 22: Алгоритмы сортировки
Page 23: Алгоритмы сортировки

Плоскости сечения поверхности по x и y

Локальный минимумминимум

x

y

z

x или (y)

Сечение поверхности

уровниЛокальный минимум

Page 24: Алгоритмы сортировки

Ограниченность метода покоординатного спуска

Возможные зоны «зацикливания» алгоритма

Page 25: Алгоритмы сортировки

Метод градиентного спуска

Шаг 1: в стартовой точке определяем градиент целевой функции F(x,y).

Шаг 2: Проводим сечение поверхности в плоскости вектора градиента функции

Шаг 3: Проводим спуск вдоль линии сечения в направлении противоположном градиенту и находим локальный минимум одномерной функции

Шаг 4: и далее Повторяем последовательность

шагов 1-3 для каждой найденной точки локального минимума.

Условия выхода: Значения функции F(x,y) на двух

соседних итерациях меньше малого числа ε

Интервал между локальными минимумами на двух соседних итерациях меньше малого числа δ

Page 26: Алгоритмы сортировки

Градиентный метод поиска минимума функции

Стартовая точка

Линия градиента

Минимум по направлению градиента

Минимум функции

Page 27: Алгоритмы сортировки

Симплекс-метод

x

y

x1,y1

x3,y3x2,y2

симплекс

Page 28: Алгоритмы сортировки

Преобразование симплекса

Центр

тяжести

отображение растяжение

сжатие редукция

Page 29: Алгоритмы сортировки

Многоэкстремальная функция

-6 -4 -2 0 2 4 6-6

-4

-2

0

2

4

6