Некоторые решатели, такие как fsolve
и lsqcurvefit
, имейте целевые функции, которые являются векторами или матрицами. Основным различием в использовании между этими типами целевых функций и скалярных целевых функций является способ записать их производные. Частные производные первого порядка функции с матричным знаком или с векторным знаком называются якобианом; частные производные первого порядка скалярной функции называются градиентом.
Для получения информации о целевых функциях с комплексным знаком смотрите Комплексные числа в Решателях Optimization Toolbox.
Если x является вектором независимых переменных, и F (x) является вектор-функцией, якобиевский J (x)
Если F имеет компоненты m, и x имеет компоненты k, J является m-by-k матрица.
Например, если
затем J (x)
Файл функции, сопоставленный с этим примером:
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 = optimptions('lsqnonlin','SpecifyObjectiveGradient',true);
Якобиан матричного F (x) задан путем изменения матрицы в вектор, столбец столбцом. Например, перепишите матрицу
как векторный f:
Якобиан F как якобиан f,
Если F является m-by-n матрица, и x является k - вектор, якобианом является mn-by-k матрица.
Например, если
затем якобиан F
Если x является матрицей, задайте якобиан F (x) путем изменения матричного x в вектор, столбец столбцом. Например, если
затем градиент задан в терминах вектора
С
и с f векторная форма F как выше, якобиан F (X) задан как якобиан f (x):
Так, например,
Если F является m-by-n матрица, и x является j-by-k матрица, то якобианом является mn-by-jk матрица.