Некоторые решатели, такие как fsolve и lsqcurvefit, имеют объективные функции, которые являются векторами или матрицами. Основное различие в использовании этих типов объективных функций и скалярных объективных функций заключается в том, как вы пишете их производные. Частные производные первого порядка векторнозначной или матрично-значной функции называются якобиановыми; частные производные первого порядка скалярной функции называются градиентом.
Сведения о комплексных целевых функциях см. в разделе Комплексные числа в решателях панели инструментов оптимизации.
Если x - вектор независимых переменных, а F (x) - векторная функция, то Jacobian J (x) -
∂xj.
Если F имеет m компонентов и x имеет k компонентов, J является матрицей m-by-k.
Например, если
2x2 − 3x3)],
тогда J (x) является
3cos (x1 + 2x2 − 3x3)].
Файл функций, связанный с этим примером:
function [F jacF] = vectorObjective(x)
F = [x(1)^2 + x(2)*x(3);
sin(x(1) + 2*x(2) - 3*x(3))];
if nargout > 1 % need Jacobian
jacF = [2*x(1),x(3),x(2);
cos(x(1)+2*x(2)-3*x(3)),2*cos(x(1)+2*x(2)-3*x(3)), ...
-3*cos(x(1)+2*x(2)-3*x(3))];
endЧтобы указать решателю, что ваша целевая функция включает якобиан, установите SpecifyObjectiveGradient опция для true. Например:
options = optimoptions('lsqnonlin','SpecifyObjectiveGradient',true);
Чтобы определить якобиан матрицы F (x), измените матрицу на вектор, столбец за столбцом. Например, переписать матрицу
F11F12F21F22F31F32]
как вектор f
].
Якобиан F определяется в терминах якобиан f,
Если F - матрица m-на-n, а x - k-вектор, то Jacobian - матрица mn-на-k.
Например, если
x22x13 − x24],
тогда якобиан F
x2/x121/x13x12 − 4x23].
Если x является матрицей, определите якобиан F (x), изменив матрицу x на вектор, столбец за столбцом. Например, если
],
затем градиент определяется в терминах вектора
].
С
],
и f, имеющий векторную форму F, якобиан F (X) определяется как якобиан f (x):
Так, например,
) =∂F22∂X22.
Если F является матрицей m-на-n и x является матрицей j-на-k, то Jacobian является матрицей mn-на-jk.