Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / отчет по ТПР № 2 В2

.doc
Скачиваний:
12
Добавлен:
02.05.2014
Размер:
87.04 Кб
Скачать

Уфимский Государственный Авиационный Технический Университет

Кафедра автоматизированных технологических систем

Лабораторная работа № 2

Метод касательных

Выполнили:

Проверил:

Уфа-2006

Цель работы:

Изучить метод касательных и получить практические навыки разработки алгоритма

Теоретическая часть:

Если вычисление измерение или проводит при f(х) не представлений больших затруднений, то для решения задачи минимизации можно применять методы, основанные на использовании производных 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

Рис. 1

Требуемая точность минимизации функции 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. Отрезок [an; bn] выбирается так, чтобы Х* € [an; bn].Если условие f’(x)*f’(b)<0 не выполняется, то

а) Х*= a при f’(а)>0, f’(c)>0

б) Х* = b при f’(а) <0, f’(b) <0

в) Х* = а при f’(a) = 0

г) Х* = а при f’(a)=0

Основная программа

function [x0,y0]=f(a,b,eps)

fplot (@fun,[a b],eps)

hold on

fplot (@diffun,[a b],0.01,'g')

if diffun(a).*diffun(b)<0

c=(b.*diffun(b)-a.*diffun(a)+fun(a)-fun(b))./(diffun(b)-diffun(a));

while abs(diffun(c))<eps

if diffun(c)<0

a=c

else b=c

end

c=(b.*diffun(b)-a.*diffun(a)+fun(a)-fun(b))./(diffun(b)-diffun(a));

end

x0=c;

elseif fun(a)>fun(b)

x0=b;

elseif fun(a)<fun(b)

x0=a;

else disp('pryamaya')

end

y0=fun(x0);

plot(x0,y0,'blao')

grid on

Подпрограммы

function v=fun(w)

v=10.*w.*log(w)-(w.^2)./2;

function v=diffun(w)

v=10.*(log(w)+1)-w;

Вывод: В ходе работы мы изучили метод касательных и получили практические навыки разработки алгоритма.

Соседние файлы в папке Лабораторные работы