Main Content

Escribir funciones objetivo de vector y de matriz

¿Qué son las funciones objetivo de vector y de matriz?

Algunos solvers, como fsolve y lsqcurvefit, tienen funciones objetivo que son vectores o matrices. La principal diferencia en el uso de estos tipos de funciones objetivo y las funciones objetivo de escalar es la forma en la que se escriben sus derivadas. Las derivadas parciales de primer orden de una función de valor vectorial o valor de matriz se llaman matrices jacobianas; las derivadas parciales de primer orden de una función escalar se llaman gradientes.

Para obtener más información sobre funciones objetivo de valores complejos, consulte Números complejos en solvers de Optimization Toolbox.

Matrices jacobianas de funciones vectoriales

Si x es un vector de variables independientes y F(x) es una función vectorial, la matriz jacobiana J(x) es

Jij(x)=Fi(x)xj.

Si F tiene m componentes y x tiene k componentes, J es una matriz de m por k.

Por ejemplo, si

F(x)=[x12+x2x3sin(x1+2x23x3)],

, entonces J(x) es

J(x)=[2x1x3x2cos(x1+2x23x3)2cos(x1+2x23x3)3cos(x1+2x23x3)].

El archivo de función asociado a este ejemplo es:

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

Para indicar al solver que la función objetivo incluye una matriz jacobiana, establezca la opción SpecifyObjectiveGradient en true. Por ejemplo:

options = optimoptions('lsqnonlin','SpecifyObjectiveGradient',true);

Matrices jacobianas de funciones de matriz

Para definir la matriz jacobiana de una matriz F(x), cambie la matriz por un vector, columna a columna. Por ejemplo, reescriba la matriz

F=[F11F12F21F22F31F32]

como un vector f

f=[F11F21F31F12F22F32].

La matriz jacobiana de F se define en términos de la matriz jacobiana de f,

Jij=fixj.

Si F es una matriz de m por n y x es un vector k, la matriz jacobiana es una matriz de mn por k.

Por ejemplo, si

F(x)=[x1x2x13+3x225x2x14x2/x14x22x13x24],

, entonces la matriz jacobiana de F es

J(x)=[x2x14x13502x23x126x2x2/x121/x13x124x23].

Matrices jacobianas con variables independientes con valor de matriz

Si x es una matriz, defina la matriz jacobiana de F(x) cambiando la matriz x por un vector, columna a columna. Por ejemplo, si

X=[x11x12x21x22],

, entonces el gradiente se define en términos del vector

x=[x11x21x12x22].

Si

F=[F11F12F21F22F31F32],

y f tienen el formato de vector de F, la matriz jacobiana de F(X) se define como la matriz jacobiana de f(x):

Jij=fixj.

De este modo, por ejemplo,

J(3,2)=f(3)x(2)=F31X21, and J(5,4)=f(5)x(4)=F22X22.

Si F es una matriz de m por n y x es una matriz de j por k, entonces la matriz jacobiana es una matriz de mn por jk.

Temas relacionados