|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
请问 初始解 阻尼因子 缩放常数 怎么取 才能有最优解 ???
阻尼最小二乘法 程序 如下
function [r,m]=mulDamp(F,x0,h,u,v,eps)
% 方程组:F
% 方程组的初始解:x0
% 数值微分增量步:h
% 阻尼因子:u
% 缩放常数:v
% 解的精度:eps
% 求得的一组解:r
% 迭代步数:m
% format long;
if nargin==5
eps=1.0e-6;
end
FI=transpose(F)*F/2;
n=length(x0);
x0=transpose(x0);
m=1;
tol=1;
while tol>eps;
j=0;
fx=subs(F,findsym(F),x0);
J=zeros(n,n);
for i=1:n
x1=x0;
x1(i)=x1(i)+h;
afx=subs(F,findsym(F),x1);
J(:,i)=(afx-fx)/h;
end
FIx=subs(FI,findsym(FI),x0);
for i=1:n
x2=x0;
x2(i)=x2(i)+h;
gradFI(i,1)=(subs(FI,findsym(FI),x2)-FIx)/h;
end
s=0;
while s==0
A=transpose(J)*J+u*eye(n,n);
p=-A\gradFI;
r=x0+p;
FIr=subs(FI,findsym(FI),r);
if FIr<FIx
if j==0
u=u/v;
j=1;
else
s=1;
end
else
u=u*v;
j=1;
if norm(r-x0)<eps
s=1;
end
end
end
x0=r;
tol=norm(p);
m=m+1;
if(m>100000)
disp('迭代步数太多,可能不收敛!');
return;
end
end
|
|