| 查看: 553 | 回复: 1 | ||
[求助]
最小二乘法编程遇到问题求帮助
|
|
我用阻尼最小二乘法求解非线性方程组f=acos(d-b)+c最优值问题,d是自变量,结果我想得到迭代次数和a,b,c在迭代中的变化,该怎么修改,求大神帮忙,代码如下: clear all; tic vx=zeros(1,90); vy=vx; vz=vx; %%初始值 vx(1, =8;vy(1, =8;vz(1, =1;%%加噪声 vxn=awgn(vx(1, ,0);vyn=awgn(vy(1, ,0);vzn=awgn(vz(1, ,0);%vxn=3*6^(0.5)+randn(90,1); %vyn=pi/4+randn(90,1); %vzn=0.5+randn(90,1); a=((vxn).^2.+(vyn).^2).^(0.5)*3^(0.5)*0.5; b=atan(vyn./vxn); c=0.5*vzn; %%方位角,90个点 dd=pi/45:pi/45:2*pi; vr=zeros(1,90); vro=zeros(1,90); for i=1:1:90 vr(i)=a(i)*cos(dd(i)-b(i))+c(i); vro(i)=4*6^(0.5)*cos(dd(i)-pi/4)+0.5; end %% % 计算函数f的雅克比矩阵,是解析式 syms a b c y x real; y=a*cos(x-b)+c; Jsym=jacobian(y,[a b c]) % 拟合用数据。参见《数学试验》,p190,例2 data_1=dd; obs_1=vr; % 2. LM算法 % 初始 %a0=3*6^(0.5); %b0=pi/4; %c0=0.5; a0=1; b0=8; c0=0; y_init = a0*cos(data_1(1)-b0)+c0; % 数据个数 Ndata=length(obs_1); % 参数维数 Nparams=3; % 迭代最大次数 n_iters=50; % LM算法的阻尼系数初值 lamda=0.1; % step1: 变量赋值 updateJ=1; a_est=a0; b_est=b0; c_est=c0; % step2: 迭代 for it=1:n_iters if updateJ==1 % 根据当前估计值,计算雅克比矩阵 J=zeros(Ndata,Nparams); for i=1:length(data_1) %J(i, =[exp(-b_est*data_1(i)) -a_est*data_1(i)*exp(-b_est*data_1(i))];J(i, =[cos(data_1(i)-b_est) a_est*sin(data_1(i)-b_est) 1];end % 根据当前参数,得到函数值 %y_est = a_est*exp(-b_est*data_1); y_est=a_est*cos(data_1-b_est)+c_est; % 计算误差 d=obs_1-y_est; % 计算(拟)海塞矩阵 H=J'*J; % 若是第一次迭代,计算误差 if it==1 e=dot(d,d); end end % 根据阻尼系数lamda混合得到H矩阵 H_lm=H+(lamda*eye(Nparams,Nparams)); % 计算步长dp,并根据步长计算新的可能的\参数估计值 dp=inv(H_lm)*(J'*d( );g = J'*d( ;a_lm=a_est+dp(1); b_lm=b_est+dp(2); c_lm=c_est+dp(3); % 计算新的可能估计值对应的y和计算残差e %y_est_lm = a_lm*exp(-b_lm*data_1); y_est_lm=a_lm*cos(data_1-b_lm)+c_lm; d_lm=obs_1-y_est_lm; e_lm=dot(d_lm,d_lm); % 根据误差,决定如何更新参数和阻尼系数 if e_lm<e lamda=lamda/10; a_est=a_lm; b_est=b_lm; c_est=c_lm; e=e_lm; it=it+1 disp(e); updateJ=1; else updateJ=0; lamda=lamda*10; end end dis=[a_est/((1+tan(b_est)^2)^(0.5)*3^(0.5)/2) a_est*tan(b_est)/((1+tan(b_est)^2)^(0.5)*3^(0.5)/2) c_est*2] toc %% vrn=a_est*cos(dd-b_est)+c_est; plot(dd,vr,'r+'); hold on; plot(dd,vrn); plot(dd,vro,'g'); hold off; |
» 猜你喜欢
参与限项
已经有3人回复
假如你的研究生提出不合理要求
已经有7人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
2楼2017-10-11 09:19:21












=8;
回复此楼