Найти в Дзене
Piter Melnikov

Вычисление производной и экстремумов функции в Matlab

Вычисление производной функции В библиотеке Matlab есть специальная функция diff, которая выполняет аппроксимацию производных конечными разностями. Она имеет несколько синтаксических конструкций:
- diff(X) — возвращает конечные разности смежных элементов массива X. Если X — вектор, то diff(X) возвращает вектор разностей соседних элементов [Х(2)-Х(1) Х(3)-Х(2) ... X(n)-X(n-D], у которого количество элементов на единицу меньше, чем у исходного вектора X.
Если X — матрица, то diff(X) возвращает матрицу разностей столбцов: [X(2:m, :)-X(l:m-l. :)];
- diff(X,n,dim) — возвращает конечные разности для матрицы X по строкам или по столбцам в зависимости от значения параметра dim. Если порядок n равен величине dim или превышает ее, то diff возвращает пустой массив. Пример. Применяя функцию diff, вычислим производную функции в точке x=3. Введем идентификаторы переменных:
- x – переменная для хранения значения величины аргумента x, для которого вычисляется производная функции,
- dx – перем
Оглавление

Вычисление производной функции

В библиотеке Matlab есть специальная функция diff, которая выполняет аппроксимацию производных конечными разностями. Она имеет несколько синтаксических конструкций:
-
diff(X) — возвращает конечные разности смежных элементов массива X. Если X — вектор, то diff(X) возвращает вектор разностей соседних элементов [Х(2)-Х(1) Х(3)-Х(2) ... X(n)-X(n-D], у которого количество элементов на единицу меньше, чем у исходного вектора X.
Если X — матрица, то diff(X) возвращает матрицу разностей столбцов: [X(2:m, :)-X(l:m-l. :)];
-
diff(X,n,dim) — возвращает конечные разности для матрицы X по строкам или по столбцам в зависимости от значения параметра dim. Если порядок n равен величине dim или превышает ее, то diff возвращает пустой массив.

Пример. Применяя функцию diff, вычислим производную функции

-2

в точке x=3.

Введем идентификаторы переменных:
-
x – переменная для хранения значения величины аргумента x, для которого вычисляется производная функции,
-
dx – переменная для хранения конечного приращения,
-
Y- переменная для хранения вычисленных значений функции,
-
D - переменная для хранения вычисленного значения производной.
Код инструкции и полученный результат приведены ниже (рис. 1).

-3
Рис. 1.
Рис. 1.

Вычисление локальных экстремумов

Напомним, что функция Y=f(x) имеет экстремум в точке Х , если производная функции в этой точке равна нулю.

Задача вычисления локальных экстремумов исследуемой (целевой) функции в Matlab сводится к вычислению значения ее аргумента, при котором функция принимает минимальное (максимальное) значение с последующей проверкой существования экстремума путем вычисления производной в найденной точке.

Для решения первой задачи в системе Matlab используется функция [X.fval.exitflag,output] = fminbnd(@fun.x1,x2.options, p1,p2,...), имеющая следующие синтаксические конструкции:
-
fminbnd(@fun,xl,x2) — возвращает значение х, которое является локальным минимумом функции fun(x) на интервале xl<x<x2;
-
fminbnd(@fun,xl,x2.options) — сходна с описанной выше формой функции, но использует параметры tolX, maxfuneval, maxiter, display из вектора options, предварительно установленные при помощи команды optimset;
-
fminbnd(@fun,xl,x2,options,P1,P2...) — сходна с описанной выше, но передает в целевую функцию дополнительные аргументы: P1, P2.....
Если требуется использовать параметры вычислений по умолчанию, то вместо options перед P1, P2 необходимо ввести [ ] (пустой массив);
-
[x,fval] = fminbnd(...) — дополнительно возвращает значение целевой функции fval в точке минимума;
-
[x,fval ,exitflag] = fminbndL) —дополнительно возвращает параметр exitflag, равный 1, если функция сошлась с использованием options.tolX, и 0, если достигнуто максимальное число итераций options.maxiter.

Если нужно найти максимум целевой функции, то достаточно поставить знак «минус» перед функцией.

В этих представлениях используются следующие обозначения:
- xl. х2 — интервал, на котором ищется минимум функции;
- Р1.Р2... — дополнительные, помимо х, передаваемые в функцию аргументы;
- fun — строка, содержащая название функции, которая будет минимизирована; options — вектор параметров вычислений. В зависимости от формы задания функции fminbnd вычисление минимума выполняется известными методами золотого сечения или параболической интерполяции.
Пример:
>> options=optimset('tolX',1.е-10);
[x]=fminbnd(@cos.3,4,options)
х = 3.1416

Для вычисления экстремума функции y= x^2+x +2 выполним следующие операции:
- так как исследуемая функция в параметре функции
fminbnd Matlab указывается в форме дескриптора, то создадим m-файл с кодом функции:

% функция y= x^2+x +2
function urav=fun1(x)
urav=x.^2+x +2;

- сохраним файл, присвоив ему имя fun1.m (рис. 2);

Рис. 2.
Рис. 2.

- чтобы выяснить, являются экстремумы исследуемой функции максимумами или минимумами, построим в заданном интервале x ее график (рис. 3), введя в командном окне инструкцию
>> fplot(@fun1, [-1 1]); grid on

Рис. 3.
Рис. 3.

На графике видно, что примерно при x= -0,5 исследуемая функция имеет минимум;
- в командном окне Matlab введем код инструкции для вычисления минимума функции:

-7

На рис. 4 показан результат в командном окне.

Рис. 4.
Рис. 4.

- вычислим производную исследуемой функции в точке x=-0,5, для этого в командном окне Matlab введем инструкцию:

-9

Результат представлен в командном окне (рис. 5).

Рис. 5.
Рис. 5.

Полученное значение производной исследуемой функции в точке x= -0,5 равно нулю, следовательно, в этой точке функция имеет локальный экстремум.