声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1237|回复: 1

[综合讨论] 阻尼最小二乘法函数 各个参数的选取

[复制链接]
发表于 2011-2-15 23:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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
回复
分享到:

使用道具 举报

发表于 2011-2-18 09:25 | 显示全部楼层
缩放常数:v 是否有范围 如果有 那么数据少可通过循环计算 然后比较 数据多 可以通过优化方法寻找
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 12:39 , Processed in 0.053501 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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