
- •Т.О., если определен корень характеристического уравнения, то можно понизить на единицу степень полинома и приступить к решению уравнения:
- •Идентификаторы совпадают для переменных: .
- •Приближенное значение производной можно записать: т.К. , то далее процесс итераций х следует повторить до достижения величиной заданной точности е. В общем виде алгоритм запишется :
- •1. Какие узлы использовать.
- •Интерполяционные полиномы Эрмита
- •Сплайны
- •Методы поиска экстремума функции многих переменных.
- •Метод покоординатного спуска (Гаусса – Зейделя)
- •Метод прямого поиска (конфигураций).
- •Градиентные методы.
- •Наискорейший спуск
- •Метод дфп
Методы поиска экстремума функции многих переменных.
Рассмотрим сначала прямые методы, которые требуют знания лишь значения функций и не требуют вычисления производных.
Метод покоординатного спуска (Гаусса – Зейделя)
Необходимое условие существования экстремума функции многих переменных равенство нулю частных производных в точке экстремума.
f(x1,x2,…,xn)=f(x)
Градиенты
функции обозначают
f(x)
или g(x).
Тогда g(x)=0.
В случае глобального max
f(x)<f(x0).
Точно также как и для функции одной переменной имеем:
максимум, если второе произведение от f по х, т.е. G(x)-гессиан, отрицательно определен
минимум, если G(x) положительно определен.
Пример: f(x)=x12+x22+x32-2x1-4x2-6x3+50
g(x)=
x1=1
, x2=2
, x3=3.
G(x)=
- положительно определен. Все собственные
значения равны 2.
В точке (1,2,3) f(x) достигает максимума.
Таким образом, самый очевидный метод поиска экстремума многих переменных – это метод покоординатного спуска. Сначала любым из методов для функции одной переменной определяется экстремум функции относительно этой переменной. Затем переменная фиксируется и идет поиск экстремума по другой переменной и т.д. Из описания алгоритма метода следует, что шаг движения
по координатам х задан Δх. Он обычно одинаков для всех координат х.
Когда найдено значение всех координат в точке экстремума x1*, x2*,…,x* (одна итерация), шаг уменьшаемся.
Процесс итерации заканчивается, если изменение шага не приводит к изменению функции.
Метод наиболее эффективен для сепарабильных функций, у которых отсутствуют перекрестные связи между координатами. Поэтому решение достигается за одну итерацию. В противном случае может потребоваться несколько итераций.
Пример сепарабильной функции:
F(x)=
Fi(xi
– xi*)
, где
Fi – унимодальные функции минимумом в начале координат.
Графическая иллюстрация для одной
итерации:
найдены x1* и x2* .
для малого шага Δх= Δх1= Δх2. Значения x1к* и x2к* должны совпадать
для очередных приближений.
F=x12+x22+x32
F= (x1 –1)2+( x2 - 2)2+( x3-3)2=0
Procedure COORD;
var I:integer; var E,B,C,L,H : real; label 1,2;
begin
H:=0.1; E:=1E-5; L:=H;
2: for I:=1 to N do
begin
B:=1E+38;
1: x[I]:=x[I]+H; FUNK; C:=B; B:=F;
if (F-C)<0 then goto 1;
H:=-H/3;
if abs(H)>=abs(L/3) then goto 2;
H:=L;
end;
L:=L/9; H:=L;
if E/9<=L then goto 1;
write(x);
end;
Число переменных N задано и описано в основной программе. Вектор Х должен быть задан по начальным приближениям Х0 и описан в основной программе.
Результат расчета процедуры FUNK должен содержаться в F. Входным параметром ее должен быть Х.
Разновидностью метода является метод спирального покоординатного спуска.
При использовании этого метода шаг по координатам меняется при переходе от одной переменной к другой.
Procedure COORDS;
var I:integer; var B,C,N,E:real; label 1,2;
begin
H:=0.1; E:=1E-5;
2: for I:=1 to N do
begin
B:=1E+38;
1: x[I]:=x[I]+H; FUNK; C:=B; B:=F;
if (F-C)<0 then goto 1;
end;
H:=-H/5;
if abs(H)>abs(E/3) then goto 2;
write(x);
end;
Методы покоординатного спуска плохо работают, если функция имеет “овраг”, дно которого не ориентировано вдоль координатных осей.