Численные алгоритмы.   Численные алгоритмы: решение алгебраических и трансцендентных уравнений,  решение систем линейных алгебраических уравнений,  решение систем обыкновенных дифференциальных уравнений, решение уравнений в частных производных, оптимизация,  обработка числовых данных. Алгоритмы типа «разделяй-и-властвуй» реализуются в задачах поиска корня алгебраических и трансцендентных уравнений, а также в задачах оптимизации.
Решение алгебраических и трансцендентных уравнений Дано уравнение где функция  определена и непрерывна на отрезке  a < x < b Всякое значение ξ ,  обращающее  в нуль (т.е.  ) является корнем уравнения Алгоритм решения: Отделение корней Уточнение приближенных значений корней A B X F(x)
Отделение корней производится разбиением интервала [ a , b ] на участки  [a  -  x 1   -  x 2   -  x 3- … -  xn  -  b] , на которых произведение  f ( x(i )* f ( x ( i +1))<0   x1 x2 x3 Уточняем значение корня на каждом из выделенных участков [ x(i ) -  x ( i +1)] A B X F(x)
Корень нелинейного уравнения.   Деление отрезка пополам.   Функция  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 *)
a b x ср f(a) f(b) f(x ср ) a b x ср f(a) f(x ср ) f(b) a b x ср
Оптимизация Поиск минимума функции одной переменной. Поиск минимума функции нескольких переменных.
Поиск минимума функции одной переменной : дихотомия Функция  F ( x )  задана на отрезке  [ a , b ]  и имеет только один минимум.  ε ,   δ  – малые значения,  b>a . Шаг1:  Определяем середину интервала  x ср=( a + b )/2  , выделяем две точки на оси аргументов  x 1=  x ср –  ε   и  x 2=  x ср +  ε   .  Шаг2:  Вычисляем в этих точках значения функции  F ( x 1)  и   F ( x 2 ). Шаг3:  Сравниваем значения функции  F ( x 1)  и   F ( x 2 ).  Если  F ( x 1) <  F ( x 2 ) , то присваиваем  b =  x ср ,  иначе  a =  x ср . Шаг4:  Завершение счета. Если   abs ( b - a )<  δ  или  abs ( F ( b )) <  ε   и  abs  ( F ( a ))<  ε , то перейти к  шагу 5 , иначе перейти к  шагу 2 . Шаг5:  Вычисляем  xmin =( a + b )/2   и  F ( xmin )
a x1  x ср  x 2  b a x1  x ср  x 2  b a x1  x ср  x 2  b F(x1) F(x2) F(x2) F(x1)
Функция  F ( x )  задана на отрезке  [ a , b ]  и имеет один минимум.  ε ,   δ  – малые значения  ,  b>a . Поиск минимума функции одной переменной :   деление отрезка пополам.
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
Шаг1:  Определяем середину отрезка  x ср=( a + b )/2   Шаг2:  Выделяем две точки    x 1=  x ср –  abs ( b - a )/4  и  x 2=  x ср +  abs ( b - a )/4  .  Шаг3:  Вычисляем в этих точках значения  функции  F ( x ср) ,   F ( x 1)  и   F ( x 2 ). Шаг4:  Сравниваем значения функции  F ( x 1)  и   F ( x ср ).   Если  F ( x 1) <  F ( x ср ) , то присваиваем  b =  x ср ,  x ср= x 1  и переходим к  шагу  6 , иначе переходим к  шагу  5 .  Шаг5:  Сравниваем значения функции  F ( x 2)  и   F ( x ср ).    Если  F ( x2 ) <  F ( x ср ) , то присваиваем  a =  x ср ,  x ср= x 2,   иначе   присваиваем  a =  x 1 ,  b =  x 2  Шаг6:  Завершение счета. Если  abs ( b - a )<  δ  или  ( abs ( F ( b )) <  ε  и  abs  ( F ( a ))<  ε , то перейти к  шагу 7 , иначе перейти к  шагу 2 . Шаг7:  Вычисляем  xmin =( a + b )/2   и  F ( xmin )
F(X1)< F(X ср ),  X ср X1, X2 F(X ср ), F(X1),F(X2) F(X2)< F(X ср ),  abs ( b - a )<  δ b =  X ср ,  X ср= X 1 a =  X ср ,  X ср= x2 a =  X1 ,  b=X2 Xmin ,  F(   Xmin)
a b x1 x ср x2 F(x1) F(x ср ) F(x 2 ) a b a b x1 x ср x2 F(x1) F(x ср ) F(x 2 ) x1 x2
Поиск минимума функции одной переменной:  Золотое сечение. Геометрическая интерпретация этого принципа заключается в следующем. Дан отрезок  AB Отношение отрезков определяется соотношением  AC / AB = CB / AC , т.е. отношение большего отрезка к целому равно отношению меньшего отрезка к большему отрезку. Если принять целый отрезок АВ=1, то АС≈0.62, а СВ≈0.38 .  Пусть функция  F ( x )  задана на   отрезке  [ a , b ]   и имеет только один минимум.  ε ,   δ  – малые значения. А С В
Шаг1:  Задаем коэффициенты  k 2=0.62,  k 1=0.38 , интервал  [ a , b ]  и отрезок  L = b - a . Шаг2:  Выделяем две точки на оси аргументов  v = L * k 1  и  w = L*k 2  . Шаг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 )* k 2;   иначе переходим к  шагу 7 .  Шаг6:  Присваиваем  F ( v  )=   F ( w )  и вычисляем новое значение   F ( w )  и переходим к  шагу 3 . Шаг7:  Присваиваем  b = w ,  w = v  и  v := a +( b - a )* k 1 .  Шаг8:  Присваиваем  F ( w  )=   F ( v )  и вычисляем новое значение   F ( v )  и переходим к  шагу 3 . Шаг9:  Вычисляем  xmin =( a + b )/2   и  F ( xmin )
F(w) F(v ) F(v)>F(w ) Возможные  положения минимума функции  a V W b F(w) F(v ) F(v) < F(w ) Возможные  положения минимума функции  a V W b
a V W a V W b a V W b b W V F(v) F(w) F(v) F(w)
Нахождение минимума многомерной функции. поверхность уровни Проекции линий уровней на плоскость Целевая функция – функция, описывающая ( n+1)- мерную поверхность.
Алгоритм покоординатного спуска Шаг 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)   на двух соседних итерациях меньше малого числа   ε Интервал   между локальными минимумами на двух соседних итерациях меньше малого числа   δ
Ввод стартовой точки Вычисление минимума  f(x,y)   по направлению  y Вычисление минимума  f(x,y)   по направлению  x Проверка на глобальный минимум да нет выход
Вычисление минимума по направлению Фиксирование значения одного из параметров целевой функции  f(x,y) Обращение к процедуре поиска минимума функции одной переменной (деление отрезка пополам) Функция  f(x,y)  записывается как  function Возврат в вызывающую программу
 
Плоскости сечения поверхности по  x  и  y   Локальный минимум минимум x y z x  или  (y) Сечение поверхности уровни Локальный минимум
Ограниченность метода покоординатного спуска Возможные зоны «зацикливания» алгоритма
Метод градиентного спуска Шаг 1: в стартовой точке определяем градиент целевой функции  F(x,y) . Шаг 2: Проводим сечение поверхности в плоскости вектора градиента функции Шаг 3: Проводим спуск вдоль линии сечения в направлении противоположном градиенту и находим локальный минимум одномерной функции Шаг 4: и далее  Повторяем последовательность шагов 1-3 для каждой найденной точки локального минимума. Условия выхода: Значения функции  F(x,y)   на двух соседних итерациях меньше малого числа   ε Интервал   между локальными минимумами на двух соседних итерациях меньше малого числа  δ
Градиентный метод поиска минимума функции Стартовая точка Линия градиента Минимум по направлению градиента Минимум функции
Симплекс-метод x y x1,y1 x3,y3 x2,y2 симплекс
Преобразование симплекса Центр  тяжести отображение растяжение сжатие редукция
Многоэкстремальная функция

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

  • 1.
    Численные алгоритмы. Численные алгоритмы: решение алгебраических и трансцендентных уравнений, решение систем линейных алгебраических уравнений, решение систем обыкновенных дифференциальных уравнений, решение уравнений в частных производных, оптимизация, обработка числовых данных. Алгоритмы типа «разделяй-и-властвуй» реализуются в задачах поиска корня алгебраических и трансцендентных уравнений, а также в задачах оптимизации.
  • 2.
    Решение алгебраических итрансцендентных уравнений Дано уравнение где функция определена и непрерывна на отрезке a < x < b Всякое значение ξ , обращающее в нуль (т.е. ) является корнем уравнения Алгоритм решения: Отделение корней Уточнение приближенных значений корней A B X F(x)
  • 3.
    Отделение корней производитсяразбиением интервала [ a , b ] на участки [a - x 1 - x 2 - x 3- … - xn - b] , на которых произведение f ( x(i )* f ( x ( i +1))<0 x1 x2 x3 Уточняем значение корня на каждом из выделенных участков [ x(i ) - x ( i +1)] A B X F(x)
  • 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 *)
  • 5.
    a b xср f(a) f(b) f(x ср ) a b x ср f(a) f(x ср ) f(b) a b x ср
  • 6.
    Оптимизация Поиск минимумафункции одной переменной. Поиск минимума функции нескольких переменных.
  • 7.
    Поиск минимума функцииодной переменной : дихотомия Функция F ( x ) задана на отрезке [ a , b ] и имеет только один минимум. ε , δ – малые значения, b>a . Шаг1: Определяем середину интервала x ср=( a + b )/2 , выделяем две точки на оси аргументов x 1= x ср – ε и x 2= x ср + ε . Шаг2: Вычисляем в этих точках значения функции F ( x 1) и F ( x 2 ). Шаг3: Сравниваем значения функции F ( x 1) и F ( x 2 ). Если F ( x 1) < F ( x 2 ) , то присваиваем b = x ср , иначе a = x ср . Шаг4: Завершение счета. Если abs ( b - a )< δ или abs ( F ( b )) < ε и abs ( F ( a ))< ε , то перейти к шагу 5 , иначе перейти к шагу 2 . Шаг5: Вычисляем xmin =( a + b )/2 и F ( xmin )
  • 8.
    a x1 x ср x 2 b a x1 x ср x 2 b a x1 x ср x 2 b F(x1) F(x2) F(x2) F(x1)
  • 9.
    Функция F( x ) задана на отрезке [ a , b ] и имеет один минимум. ε , δ – малые значения , b>a . Поиск минимума функции одной переменной : деление отрезка пополам.
  • 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
  • 11.
    Шаг1: Определяемсередину отрезка x ср=( a + b )/2 Шаг2: Выделяем две точки x 1= x ср – abs ( b - a )/4 и x 2= x ср + abs ( b - a )/4 . Шаг3: Вычисляем в этих точках значения функции F ( x ср) , F ( x 1) и F ( x 2 ). Шаг4: Сравниваем значения функции F ( x 1) и F ( x ср ). Если F ( x 1) < F ( x ср ) , то присваиваем b = x ср , x ср= x 1 и переходим к шагу 6 , иначе переходим к шагу 5 . Шаг5: Сравниваем значения функции F ( x 2) и F ( x ср ). Если F ( x2 ) < F ( x ср ) , то присваиваем a = x ср , x ср= x 2, иначе присваиваем a = x 1 , b = x 2 Шаг6: Завершение счета. Если abs ( b - a )< δ или ( abs ( F ( b )) < ε и abs ( F ( a ))< ε , то перейти к шагу 7 , иначе перейти к шагу 2 . Шаг7: Вычисляем xmin =( a + b )/2 и F ( xmin )
  • 12.
    F(X1)< F(X ср), X ср X1, X2 F(X ср ), F(X1),F(X2) F(X2)< F(X ср ), abs ( b - a )< δ b = X ср , X ср= X 1 a = X ср , X ср= x2 a = X1 , b=X2 Xmin , F( Xmin)
  • 13.
    a b x1x ср x2 F(x1) F(x ср ) F(x 2 ) a b a b x1 x ср x2 F(x1) F(x ср ) F(x 2 ) x1 x2
  • 14.
    Поиск минимума функцииодной переменной: Золотое сечение. Геометрическая интерпретация этого принципа заключается в следующем. Дан отрезок AB Отношение отрезков определяется соотношением AC / AB = CB / AC , т.е. отношение большего отрезка к целому равно отношению меньшего отрезка к большему отрезку. Если принять целый отрезок АВ=1, то АС≈0.62, а СВ≈0.38 . Пусть функция F ( x ) задана на отрезке [ a , b ] и имеет только один минимум. ε , δ – малые значения. А С В
  • 15.
    Шаг1: Задаемкоэффициенты k 2=0.62, k 1=0.38 , интервал [ a , b ] и отрезок L = b - a . Шаг2: Выделяем две точки на оси аргументов v = L * k 1 и w = L*k 2 . Шаг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 )* k 2; иначе переходим к шагу 7 . Шаг6: Присваиваем F ( v )= F ( w ) и вычисляем новое значение F ( w ) и переходим к шагу 3 . Шаг7: Присваиваем b = w , w = v и v := a +( b - a )* k 1 . Шаг8: Присваиваем F ( w )= F ( v ) и вычисляем новое значение F ( v ) и переходим к шагу 3 . Шаг9: Вычисляем xmin =( a + b )/2 и F ( xmin )
  • 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
  • 17.
    a V Wa V W b a V W b b W V F(v) F(w) F(v) F(w)
  • 18.
    Нахождение минимума многомернойфункции. поверхность уровни Проекции линий уровней на плоскость Целевая функция – функция, описывающая ( n+1)- мерную поверхность.
  • 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) на двух соседних итерациях меньше малого числа ε Интервал между локальными минимумами на двух соседних итерациях меньше малого числа δ
  • 20.
    Ввод стартовой точкиВычисление минимума f(x,y) по направлению y Вычисление минимума f(x,y) по направлению x Проверка на глобальный минимум да нет выход
  • 21.
    Вычисление минимума понаправлению Фиксирование значения одного из параметров целевой функции f(x,y) Обращение к процедуре поиска минимума функции одной переменной (деление отрезка пополам) Функция f(x,y) записывается как function Возврат в вызывающую программу
  • 22.
  • 23.
    Плоскости сечения поверхностипо x и y Локальный минимум минимум x y z x или (y) Сечение поверхности уровни Локальный минимум
  • 24.
    Ограниченность метода покоординатногоспуска Возможные зоны «зацикливания» алгоритма
  • 25.
    Метод градиентного спускаШаг 1: в стартовой точке определяем градиент целевой функции F(x,y) . Шаг 2: Проводим сечение поверхности в плоскости вектора градиента функции Шаг 3: Проводим спуск вдоль линии сечения в направлении противоположном градиенту и находим локальный минимум одномерной функции Шаг 4: и далее Повторяем последовательность шагов 1-3 для каждой найденной точки локального минимума. Условия выхода: Значения функции F(x,y) на двух соседних итерациях меньше малого числа ε Интервал между локальными минимумами на двух соседних итерациях меньше малого числа δ
  • 26.
    Градиентный метод поискаминимума функции Стартовая точка Линия градиента Минимум по направлению градиента Минимум функции
  • 27.
    Симплекс-метод x yx1,y1 x3,y3 x2,y2 симплекс
  • 28.
    Преобразование симплекса Центр тяжести отображение растяжение сжатие редукция
  • 29.