MAtlab运算L-M方法

W138aaaa9868 2019-03-11 09:36:35
请问下面的报错如何解决?
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);
...全文
232 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,424

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧