Отчёт
Задание 3
« »__________ 2021 г.
Санкт-Петербург
2021
1) Вычислить наименьшее или наибольшее значение функции методом
Ньютона, самостоятельно определив отрезок унимодальности функции.
Построить график функции. Привести код программы.
2) Разработать численный алгоритм решения задачи методом
квадратичной аппроксимации. Привести код программы.
3) Привести данные сравнения результатов расчета методами Ньютона и
квадратичной аппроксимации (с указанием числа шагов до достижения
требуемой точности). Точку оптимума 𝑥𝑥∗ в обоих случаях определить с
точностью до 10−3.
2
В ходе работы были написаны две функции в MatLab, реализующие
поиск локального минимума методами Ньютона и квадратичной
аппроксимации (метод Пауэлла). Код функций представлены в приложении 1.
3
ПРИЛОЖЕНИE
Приложение А. Программа для расчёта по заданию 3.
fun = @(x)((x-1).^4);
dfun = @(x)(4*(x-1).^3);
d2fun = @(x)(12*(x-1).^2);
a = -2;
b = 4;
eps = 0.001;
x = a:0.01:b;
y = fun(x);
y1 = dfun(x);
y2 = d2fun(x);
plot(x, y, 'b');
hold on;
plot(x, y1, 'g');
plot(x, y2, 'r');
y3 = f(x3);
iters = 1;
while true
if(and((y1 <= y2), y1 <= y3))
minX = x1;
minY = y1;
else
if(y2 <= y3)
minX = x2;
minY = y2;
else
minX = y3;
minY = y3;
end
end
a1 = (y2-y1) / (x2-x1);
a2 = ((y3-y1)/(x3-x1) - (y2-y1)/(x2-x1))/(x3-x2);
testX = (x2 + x1) / 2 - (a1/2/a2);
testY = f(testX);
iters = iters + 1;
step = step / 2;
if(testY < minY)
x1 = testX;
else
x1 = minX;
end
5
y1 = f(x1);
x2 = x1 + step;
y2 = f(x2);
x3 = x1 - step;
y3 = f(x3);
end
end