《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 92|回复: 2
收起左侧

[提问] 利用LM最小二乘法出现问题怎么改

[复制链接]

该用户从未签到

发表于 2017-5-19 21:21:08 | 显示全部楼层 |阅读模式
程序如下:
function j=Bouc_Wen(x)  
y0=[0];
yy=y0;
load('T.mat')
tspan=T(:,1);
v=T(:,2);
Ft=T(:,3);
s=T(:,4);
N=length(s);
%Bouc-Wen模型
for i=1:N-1
    [t,y]=ode45(@uubird,[tspan(i),tspan(i+1)],y0,[],v(i),x);
    y0=y(end,:);
    yy=[yy;y0];
end
F=x(:,4)*v+x(:,5)*(s-ones(size(s))*x(:,6))+x(:,7)*yy(:,1);  %c0=x(4);k0=x(5);x0=x(6);alpha=x(7)
j=F-Ft;

function [x,minf]=minLM(f,x0,beta,u,v,var,eps)
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
            Fx(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 x
eps=1e-3;
beta=0.4;
u=2;
v=1.5;
[x,minf]=minLM(@Bouc_Wen,[0,0,50,50,0,0,1000],beta,u,v,[x],eps)
错误如下:
??? Function 'mtimes' is not defined for values of class 'function_handle'.

Error in ==> mtimes at 18
  [varargout{1:nargout}] = builtin('mtimes', varargin{:});

Error in ==> minLM at 6
S=transpose(f)*f;

Error in ==> lsm at 6
[x,minf]=minLM(@Bouc_Wen,[0,0,50,50,0,0,1000],beta,u,v,[x],eps)
请问如何修改

签到天数: 253 天

[LV.8]以坛为家I

发表于 2017-5-22 06:58:38 来自手机 | 显示全部楼层
正是戎所需耍的。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2017-5-22 09:29:30 | 显示全部楼层
hedef 发表于 2017-5-22 06:58
正是戎所需耍的。

你会解决这问题吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 陕ICP备08102094号  

GMT+8, 2017-11-25 17:40 , Processed in 1.089994 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表