Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Функції мінімізації




Функціяfmincon виконує пошук мінімуму скалярної функції багатьох змінних (задача нелінійного програмування) за наявності обмежень вигляду:

с(х) ≤ 0, ceq(x) = 0, А х ≤ b, Aeq x = beq, lb ≤ х ≤ ub.

Функція записується у вигляді:

х = fmincon(fun,х0,А,b) – повертає розв’язок задачі оптимізації при заданих вектору цільової функції, початковому значенні х0 та обмеженнях у формі лінійної нерівності А х ≤ b

х = fmincon(fun,х0,А,b,Aeq,beq)

х = fmincon(fun,х0,А,b,Aeq,beq,lb,ub)

х = fmincon(fun,х0,А,b,Aeq,beq,lb,ub,nonlcon)

х - fmincon(fun,х0,А,b,Aeq,beq,lb,ub,nonlcon,options)

х = fmincon(fun,xu,А,b,Aeq,beq,lb,ub,nonlcon,options,Р1,Р2 ...)

[х,fval] = fmincon(...) – повертається не тільки оптимальне значення векторного аргументу, а і значення цільової функції у точці мінімуму fval

[х,fval,exitflag] = fmincon(...)

[х,fval,exitflag,output] =fmincon(...)

[х,fval,exitflag,output,lambda] = fmincon(...)

[х,fval,exitflag,output,lambda,grad]=fminconL(...)

[х,fval,exitflag,output,lambda,grad,hessian] = fmincon(...)

Аргументи функції:

fun – векторна функція векторного аргументу. Задається за допомогою функції inline, наприклад:

» fun = inline(‘sin(x.*x)’);

Або як m-файл, наприклад:

function F=myfun(x)

F = …

Величини, що повертаються:

х –знайдений розв’язок;

fval – значення цільової функції у точці мінімуму;

exitflag – інформація про характер закінчення обчислень: якщо ця величина додатна, обчислення закінчилися знаходженням розв’язку х, якщо дорівнює нулю, останов відбувся у результаті виконання певного числа ітерацій, якщо величина від’ємна, то розв’язок не знайдено;

output – інформація про результати оптимізації;

lambda – множники Лагранжа, відповідно до різних типів обмежень;

grad – градієнт функції в точці мінімуму;

Також до цієї групи функцій входять: fgoalattain, fminbnd, fminimax, fminsearch, fminunc, fseminf, linprog, quadprog.

Приклад Знайти мінімум функції при початковому значенні х = [10; 10; 10] і за наявності обмежень

Розв'язок. Спочатку створимо m-файл для визначення цільової функції:

function f=myfun(х)

f =-х(1)*х(2)*х(3);

Потім запишемо обмеження у вигляді нерівностей:

,

,

або в матричній формі:

А х ≤ b, де

,

Тепер знаходження розв'язку зобразимо таким чином:

» А=[-1 -2 -2; 1 2 2];

» b=[0;72];

» х0 = [10; 10; 10]; % Стартове значення

» [х,fval] = fmincon('myfun',х0,А,b)

х =

24.0000

12.0000

12.0000

fval = -3.4560е+003

Функції апроксимації (найменших квадратів)

Функція lsqcurvefitповертає розв’язок задачі апроксимації під наявні експериментальні дані xdata, ydata, інакше кажучи, повертає параметри функції заданого вигляду, що забезпечують її найменше середньоквадратичне відхилення від указаних даних. Запис:

х = lsqcurvefit(fun,х0,xdata,ydata)

х = lsqcurvefit(fun,х0,xdata,ydata,lb,ub)

х = lsqcurvefit(fun,х0,xdata,ydata,lb,ub,options)

х = lsqcurvefit(fun,х0,xdata,ydata,lb,ub,options, Р1, Р2...)

[х,resnorm] = lsqcurvefit(...)

[х,resnorm,residual] = lsqcurvefit(...)

[х,resnorm,residual,exitflag] = lsqcurvefit(...)

[х,resnorm,residual,exitflag,output] = lsqcurvefit(...)

[х,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(...)

[х,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(...)

Величини, що повертаються:

х –знайдений розв’язок;

resnorm – сума квадратів нев’язки ;

residual - вектор нев’язки ;

exitflag – інформація про характер закінчення обчислень: якщо ця величина додатна, обчислення закінчилися знаходженням розв’язку х, якщо дорівнює нулю, останов відбувся у результаті виконання певного числа ітерацій, якщо величина від’ємна, то розв’язок не знайдено;

lambda – множники Лагранжа, відповідно до різних типів обмежень.

Також до цієї групи функцій входять: midivide, lsqlin, lsqnonlin, lsqnonneg.

Приклад.Використання функції lsqcurvefit:

function F = myfun(х,xdata)

F = х(l)*xdata.^2 + х(2)*sin(xdata) + х(3)*xdata.^3;

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

» xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];

» ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];

» х0 = [10, 10, 10]; % стартове значення

» [х,resnorm] = lsqcurvefit('myfun',х0,xdata,ydata)

Optimization terminated successfully: Relative function value changing by less than OPTIONS.TolFun

х = 0.2269 0.3385 0.3021

resnorm = 6.2950


Поделиться:

Дата добавления: 2015-09-14; просмотров: 104; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты