Поиск экстремума функции одной переменной

При решении задач максимума и минимума функции y = f(x) одной переменной выделяют задачи локального (на каком-либо интервале) и глобального (на всей числовой оси) экстремума. В MATLAB поиск локального минимума осуществляет функция:

[х, у]= fminbnd(name, a, b [, options])

для которой:

  • name - имя М-функции, вычисляющей значение f(x);
  • а, b - границы интервала, на котором осуществляется поиск минимума;
  • options - параметры, управляющие ходом решения;
  • х, у - координаты точки, в которой достигается минимум функции на заданном интервале.

Функцию fminbnd можно использовать и для вычисления локального максимума. Для этого достаточно взять функцию name с противоположным знаком.

Пример:

В М-файле с именем mf.m пишем:

function y=mf(x)

y=x.^4-0.5*x.^3-28*x.^2+140;

end

Потом в командном окне пишем:

x=-5:0.1:6;

y=x.^4-0.5*x.^3-28*x.^2+140;

plot(x,y,'-k'), grid

%Максимум функции на интервале [-2 2]

y=-mf(x);

[x,y]=fminbnd(@mf,-2,2)

Результат:

x =

3.7224e-008

y =

-140.0000

Поиск экстремума функции нескольких переменных.

Вычисление экстремума функции многих переменных z=f(x1,x2,…,xn) осуществляет команда:

[x, z] = fminsearch(name, x0 [, options]

где:

  • name - имя М-функции, вычисляющей значение z=f(x1,x2,…,xn), зависящей от n переменных;
  • x0 – вектор из n элементов, содержащий координаты точки начального приближения;
  • options – параметры, управляющие ходом решения;
  • x - из n элементов, содержащий координаты точки, в которой достигается минимум функции;
  • z – значение функции в точке с координатами x.

Пример:

Найти минимум функции

[z,f] = fminsearch(@(x) sqrt(x(1)^2+x(2)^2), [2,2])

%Построение графика

[x y]=meshgrid(-2:0.2:2, -2:0.2:2);

z=sqrt(x.^2+y.^2);

surf(x,y,z);

Результат:

z =

1.0e-004 *

-0.4133 -0.1015

f =

4.2559e-005

Примеры:

mf.m

min.m

<<Назад

Далее>>