clc
clear;
x=-1;
y=4;
z=[x y];
syms s
A(1,1)=cosh(s); %双曲余弦函数
A(2,2)=s^2+2*s+4;
a=det(A); %行列式
syms v1 v2;
a1=subs(a,s,v1+v2*i);
a2=subs(a,s,v1-v2*i);
b=(a1-a2)/2/i; %%获得特征式的虚部
c=(a1+a2)/2; %%获得特征式的实部
f=b^2+c^2; %目标函数
grad=jacobian(f,[v1 v2]); %梯度
grad_value=subs(grad,{v1 v2},z);
eps=0.1;
n=1;
while norm(grad_value)>eps
dk=-grad_value;
ak=grad_value*dk'/(grad_value(1)*grad_value(2)-2*grad_value(1)^2-2*grad_value(2)^2);
z=z+ak*dk;
grad_value=subs(grad,{v1,v2},z);
n=n+1;
if (n>10000)
disp('跌代步数太多,不收敛!');
return;
end
end
x=z(1);
y=z(2); |