矩阵雅可比矩阵的线性系统解析
Este ejemplo muestra la reducción en evaluones de función不成比例的衍生问题,在没有直线的情况下。我明白了描述向量y矩阵的目标函数, la matriz jacobiana 联合国系统 西文 .比例,衍生,和,第二,和,salida para su función客观。
Por ejemplo, la funciónmultirosenbrock
Es una generalización
-维德拉función德罗森布罗克(领事解决问题,没有直系的约束,巴萨多的问题)英勇无畏
:
La solución del sistema de ecuación Es el punto , .
Para esta función objetivo, todos los términos jacobianos 太阳例外términos donde y Difieren en al menos uno。Para valores imares de , los términos distintos de cero son
拉función辅助multirosenbrock
艾尔最后的结局Crea la función objectivo
Y su matriz jacobiana
.
让我们一起面对这个问题 Para valores imares de y Para valores pares de .Especifique .
N = 64;X0 (1:n,1) = -1.9;X0 (2:2:n,1) = 2;[x,F,exitflag,output,JAC] = fsolve(@multirosenbrock,x0);
方程解决。Fsolve是完成的,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题显得有规律。
检查la distance de la solución calculadax
A la solución real y el número de evaluaciones de función quefsolve
必要para calcular la solución。
disp(规范(x-ones(大小(x))))
0
disp (output.funcCount)
1043
fsolve
entra la solución y必要más de 1.000 evaluaciones de función para hacerlo。
崭新的厄瓜多尔体系,雅可比的家庭。Para hacerlo, establlezca la opción“SpecifyObjectiveGradient”
在真正的
.
Opts = optimoptions(“fsolve”,“SpecifyObjectiveGradient”,真正的);[x2,F2,exitflag2,output2,JAC2] = fsolve(@multirosenbrock,x0,opts);
方程解决。Fsolve是完成的,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题显得有规律。
Una vez más,检查la distancia de la solución calculadax2
A la solución real y el número de evaluaciones de función quefsolve
必要para calcular la solución。
disp(规范(x2-ones(大小(x2))))
0
disp (output2.funcCount)
21
fsolve
deuelve la misma solución que fronormente, pero must esita unas 20 evaluaciones de función para hacerlo, en lugar de más de 1.000。总而言之,利用拉雅布里亚的母系,减少número评价función拉布里亚的市长,拉布里亚的镇长,拉布里亚的市长。
脂肪酸的配套
Este código crea la función辅助multirosenbrock
.
函数[F,J] =多罗森布罗克(x)计算问题的大小N =长度(x)如果N == 0,错误('输入向量x为空');结束如果Mod (n,2) ~= 0 error(输入向量x必须有偶数个分量);结束计算向量函数赔率= 1:2:n;偶数= 2:2:n;F = 0 (n,1);F(odds,1) = 1-x(odds);F(偶数,1)= 10.*(x(偶数)-x(奇数).^2);计算雅可比矩阵,如果nargout > 1如果Nargout > 1 c = -ones(n/2,1);C =稀疏(odds,odds, C,n,n);D = 10*ones(n/2,1);D =稀疏(偶数,偶数,D,n,n);E = -20.*x(赔率);E =稀疏(偶数,奇数,E,n,n);J = c + d + e;结束结束