КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Функції мінімізаціїФункція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
|