MAtlab运算L-M方法
请问下面的报错如何解决?
M文件
function[x,minf]=minLM(f,x0,beta,u,v,var,eps)
%f:目标函数;
%x0:初始点;
%beta:参数;
%u:阻尼参数;
%v:放大参数;
%var:自变量向量;
%eps:精度;
%x:目标函数取最小值时的自变量;
%minf:目标函数的最小值。
format long;
if nargin ==6
eps=1.0e-6;
end
S=transpose(f)*f;
k=length(f);
n=length(x0);
x0=transpose(x0);
A=jacobian(f,var);
tol=1;
while tol>eps
Fx=zeros(k,1);
for i=1:k
Fx(i,1)=Funval(f(i),var,x0);
end
Sx=Funval(S,var,x0);
Ax=Funval(A,var,x0);
gSx=transpose(Ax)*Fx;
Q=transpose(Ax)*Ax;
while 1
dx=-(Q+u*eye(size(Q)))\gSx;
x1=x0+dx;
for i=1:k
Fx1(i,1)=Funval(f(i),var,x1);
end
Sx1=Funval(S,var,x1);
tol=norm(dx);
if tol<=eps
break;
end
if Sx1>=Sx+beta*transpose(gSx)*dx
u=v*u;
continue;
else
u=u/v;
break;
end
end
x0=x1;
end
x=x0;
minf=Funval(S,var,x);
format short;
窗口:
syms t real;
f = [t^2 + t -1; 2 * t^2 -3];
[x,mf] = minLM(f,-5,0.01,1,0.5,[t])
错误使用 sym/jacobian (line 26)
The first argument must be a scalar or a vector.
出错 minLM (line 19)
A=jacobian(f,var);