Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Минимизация функции нескольких переменных
Для поиска минимума функции нескольких переменных применяется команда fminsearch. Использование команды продемонстрируем на примере нахождения локального минимума функции f(x,y)=sinsin, зависящей от двух переменных x и y. Сначала получим представление о поведении функции, построив ее линии уровня при помощи следующих команд (рис. 6.4): >> [X,Y]=meshgrid(0:.01:2); >> Z=sin(pi/2*X.^2).*sin(pi/2*Y.^2); >> [CMatr,h]=contour(X,Y,Z,[-.9,-.5,-.1,.1,.5,.9]); >> clabel(CMatr,h) На графике, приведенном на рис. 6.4, видно расположение локальных минимумов и максимумов. Один из локальных минимумов имеет стартовое приближение (1;1,7) в системе координат xOy.
Рис. 6.4 Перед применением fminsearch необходимо создать файл-функцию, вычисляющую значения данной функции, причем аргументом файл-функции должен быть вектор, первый элемент которого соответствует переменной х, а второй – y. Приведем текст требуемой файл-функции: function f=gr2(arg) x=arg(1); y=arg(2); f=sin(pi/2*x.^2).*sin(pi/2*y.^2); Теперь для уточнения координат точки минимума вызовем fminsearch с двумя входными аргументами – указателем на файл-функцию gr2 и стартовым приближением (1;1,7). В результате выходной аргумент – вектор M, возвращает координаты искомой точки минимума: >> M=fminsearch(@gr2,[1,1.7]) M = 1.0000 1.7320 Для получения значения функции в точке минимума следует вызвать fminsearch с двумя выходными аргументами: >> [M,f]=fminsearch(@gr2,[1,1.7]) M = 1.0000 1.7320 f = -1.0000 Команды fzero, fsolve, fminbnd и fminsearch позволяют задать дополнительный параметр options, контролирующий вычислительный процесс. Значение options следует предварительно сформировать при помощи команды optimset в соответствии с характером требуемого контроля. В разделе 6.3 найдено приближенное значение локального минимума функции e-xcos2πx. Представим результат в формате вывода long: >> format long >> [x2,f]=fminbnd(@gr,1.4,1.6) x2 = 1.47489614357390 f = -0.22596214557056 Задание максимальной точности eps нахождения локального минимума осуществляется при помощи следующих команд: >> options=optimset('TolX',eps); >> [x2,f]=fminbnd(@gr,1.4,1.6,options) x2 = 1.47488038336724 f = -0.22596214670612 Здесь eps – системная переменная MATLAB (см. разд. 1.2): >> disp(eps) 2.220446049250313e-016 Аналогичным образом точность задается при нахождении корней и минимизации функции нескольких переменных. Об остальных параметрах команды optimset можно узнать с помощью команды doc optimset. В следующем разделе проводится сравнение результатов вычислений с различной заданной точностью. Date: 2016-08-30; view: 233; Нарушение авторских прав |