Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные методы.doc
Скачиваний:
172
Добавлен:
07.11.2018
Размер:
1.08 Mб
Скачать

Текст программы нахождения минимума методом градиентного спуска.

DECLARE SUB gr (x(), g(), y)

n = 2

al = .15

E = .0001

DIM x(1 TO n), g(1 TO n), x1(1 TO n), g1(1 TO n)

DATA 0, 0

FOR i = 1 TO n

READ x(i)

NEXT i

k = 0

m1: CALL gr(x(), g(), y)

s = 0

FOR i = 1 TO n

s = s + g(i) ^ 2

NEXT i

IF s < E THEN GOTO m4

k = k + 1

m2: FOR i = 1 TO n

x1(i) = x(i) - al * g(i)

NEXT i

CALL gr(x1(), g1(), y1)

IF y1 < y THEN GOTO m3

al = .5 * al

GOTO m2

m3: FOR J = 1 TO n

x(J) = x1(J)

NEXT J

GOTO m1

m4: WRITE "(x1min, x2min) (", x(1), x(2), ")", "k=", k, “fmim=”,y

END

SUB gr (x(), g(), y)

y = EXP(x(1) ^ 2 + x(2) ^ 2) + 2 * x(1) - 3.5 * x(2)

ye = EXP(x(1) ^ 2 + x(2) ^ 2)

g(1) = ye * 2 * x(1) + 2

g(2) = ye * 2 * x(2) - 3.5

END SUB

Результат программы (x1min, x2min) – (-0.445472, 0.779575), число итераций k = 17, fmin = -1.380114.

Нахождение минимума функции, зависящей от нескольких переменных, можно делать с помощью пакета программ MathCAD.

П р и м е р . Найти точку минимума функции z = x2 + y2 – 4x + 8y. После записи функции указываются координаты точки, с которой начинается поиск. С помощью функции Minimize находится точка минимума, а затем и минимальное значение функции.