Лабораторные работы / отчет по ТПР № 2
.docУфимский Государственный Авиационный Технический Университет
Кафедра автоматизированных технологических систем
Отчет к лабораторной работе № 2
«Метод касательных»
Выполнили:
Проверил:
Уфа-2006
Цель работы:
Изучить метод касательных и получить практические навыки разработки алгоритма
Теоретическая часть:
Если вычисление измерение или проводит при f(х) не представлений больших затруднений, то для решения задачи минимизации можно применять123 методы, основанные на использовании на использовании производных f(x). Во многих случаях эти методы обеспечивают более быструю сходимость, чем прямые методы оптимизации.
Метод касательных применяется для минимизации внутренних дифференцирующих функций. Для того, чтобы дважды дифференцируемая на отрезке [a,b] функция была выпуклой на отрезке [a,b] необходимо и достаточно, чтобы вторая производная этой функции было неотрецательна при всех х [a,b]
Пусть f(x) – выпуклая дифференцируемая на отрезке [a,b]f(x) функция, причем f’(x)*f”(b)<0.тогда можно построить последовательности {an},{bn} и {cn}, где n – номер шага итерации, в соответствии с рекуррентнпии соотношениями
а0 = а, b0 = b
Требуемая точность минимизации функции f(x) считается допустимой, если производная f’(c) достаточна близка к нуля, то есть f”(c) ≤ ε, где ε>0 – заданное число , характеризующее точность вычислений.
Метод касательных имеет простой геометрический смысл: величина сn – это абцисса точки пересечения касательных с графиком f(x), проведенных в граничных точках отрезка [an-1,bn-1] рис. 1
Правила изменения границ отрезка [an-1,bn-1] для случаев f”(c)>0 и f”(c)<0 показаны соответственно на рис.2 и рис. 3. Отрезок [anbn] выбирается так, чтобы Х*€[anbn].Если услоие f’(x)*f”(b)<0 не выполняется, то
а) Х*= a при f”(а)>0, f”(c)>0
б) Х* = b при f”(а) <0, f”(b) <0
в) Х* = а при f”(a) = 0
д) Х* = а при f”(a)=0
Подпрограммы
Function y = subfun (x)
y= x^6 + 3*x^2 + 6*x-1
Function y = difsubfun (x)
y= 6*x*x^5 + 6*x + 6
Основная программа
Function [x0,y0] = fun (a,b,c)
Fplot (subfun[a,b],e);
Hold on
Fplot (difsubfun,[a,b],0.01;y’);
Hold on
If difsubfun (a)* difsubfun(b)<0
c= (b* difsubfun(b)-a* difsubfun(a)+ subfun(a)- subfun(b))/( difsubfun(b)- difsubfun(a))
plot (c, subfun(c), ‘nx’)
while abs(difsubfun(c))<0
a=c;
else b=c;
end
c= (b* difsubfun(b)-a* difsubfun(a) )+ subfun(a)- subfun(b))/( difsubfun(b)- difsubfun(a))
end
x0=c
else if subfun(a)>subfun(b)
x0=b;
else if subfun(a)< subfun(b)
x0=a
else disp(‘отрезок ab параллелен оси x’)
end
y0= subfun(x0)
plot (x0,y0,’y0’)
Вывод: Лучший методом касательных и получили практический навыки разработки алгоритма