24小时热门版块排行榜    

查看: 2109  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

makechange74

铁虫 (小有名气)

[求助] 用Gauss-Neuton算法解非线形最小二乘法问题 已有1人参与

自己根据网上下载源代码修改的高斯-牛顿迭代法求非线形最小二乘问题,老是显示输入参数不足。注释是根据自己理解填写的
m文件代码如下:
function [x,minf] = GN(f,x0,var,eps)
format long;
if nargin == 3                %如果没有设置eps,则eps=1.0e-6
    eps = 1.0e-6;
end
S = transpose(f)*f;            %trnspose是转置,求得r方
k = length(f);                     %
n = length(x0);                 %n为变量个数,但是没用到啊?
x0 = transpose(x0);           %将行向量转置为列向量
tol = 1;                              %初始容差
A = jacobian(f,var);         

while tol>eps
    Fx = zeros(k,1);
    for i=1:k
        Fx(i,1) = subs(f(i),var,x0);
    end
    Sx = subs(S,var,x0);    %求得f转置与其本身值,
    Ax = subs(A,var,x0);    %雅克比矩阵的值
    gSx = transpose(Ax)*Fx;   

    dx = -transpose(Ax)*Ax\gSx;
    x0 = x0 + dx;
    tol = norm(dx);           %tol=dx绝对值之和
end
minf = subs(S,var,x);
format short;
x = x0;
end
命令窗口调用如下:
xdata = S1o;                     %S1o及下面的ydata1都是自己的数据
syms z1 z2 z3 z4 z5
f = ydata1 - exp(z1)./(exp(z1)+exp(-z1)).*exp(-(xdata./exp(z3)).^exp(z2))+(1-exp(z1)./(exp(z1)+exp(-z1))).*exp(-(xdata./exp(z5)).^exp(z4));
x0 = [1.7380;0.9555;-1.3863;2.0149;-2.5257];
var = findsym(f);
eps = 1.0e-3;
>> GN
提示错误如下:
错误使用 GN (line 6)
输入参数的数目不足。
回复此楼

» 收录本帖的淘帖专辑推荐

source

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

makechange74

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by yongcailiu at 2015-01-23 08:56:32
参数没有加进去呀,当然调用错误了。eps=1.0e-3;下面一行的GN替换成GN(f,x0,var,eps)试一下

function [x,minf] = GN(f,x0,var,eps)
format long;
if nargin == 3                %如果没有设置eps,则eps=1.0e-6
    eps = 1.0e-6;
end
m = 0;
S = transpose(f)*f;           %trnspose是转置,求得r方
k = length(f);                %
%n = length(x0);               %n为变量个数,但是没用到啊?
x0 = transpose(x0);           %将行向量转置为列向量
tol = 1;                      %初始容差
A = jacobian(f,var);         

while tol>eps
    Fx = zeros(k,1);
    for i=1:k
        Fx(i,1) = subs(f(i),var,x0);
    end
    Sx = subs(S,var,x0);    %求得f转置与其本身值,
    Ax = subs(A,var,x0);    %雅克比矩阵的值
    gSx = transpose(Ax)*Fx;   

    dx = -transpose(Ax)*Ax\gSx;
    x0 = x0 + dx;
    tol = norm(dx);           %tol=dx绝对值之和
    m = m+1;
    if(m>100000)
        disp('迭代步数太多,可能不收敛');
        return;
    end
end
minf = subs(S,var,x);
format short;
x = x0;
end  


xdata = S1o;
f = ydata1 - exp(z1)./(exp(z1)+exp(-z1)).*exp(-(xdata./exp(z3)).^exp(z2))+(1-exp(z1)./(exp(z1)+exp(-z1))).*exp(-(xdata./exp(z5)).^exp(z4));
x0 = [1.7380;0.9555;-1.3863;2.0149;-2.5257];
var = findsym(f);
eps = 1.0e-3;
GN(f,x0,var,eps)
从 sym 转换为 double 时出现以下错误:


出错 GN (line 17)
        Fx(i,1) = subs(f(i),var,x0);

又出新问题了,还是麻烦能够解答一下
以下是数据
S1o:0.0580000000000000
0.0710000000000000
0.0760000000000000
0.0790000000000000
0.0830000000000000
0.0870000000000000
0.0980000000000000
0.111000000000000
0.117000000000000
0.122000000000000
0.122000000000000
0.133000000000000
0.134000000000000
0.138000000000000
0.140000000000000
0.142000000000000
0.150000000000000
0.155000000000000
0.160000000000000
0.160000000000000
0.168000000000000
0.173000000000000
0.173000000000000
0.173000000000000
0.175000000000000
0.176000000000000
0.177000000000000
0.181000000000000
0.182000000000000
0.183000000000000
0.194000000000000
0.203000000000000
0.214000000000000
0.218000000000000
0.222100000000000
0.223000000000000
0.225000000000000
0.247000000000000
0.253000000000000
0.256000000000000
0.257000000000000
0.258000000000000
0.262000000000000
0.263000000000000
0.264000000000000
0.266000000000000
0.267000000000000
0.276000000000000
0.278000000000000
0.280000000000000
0.288000000000000
0.289000000000000
0.306000000000000
0.315000000000000
0.333000000000000
0.335000000000000
0.353000000000000
0.389000000000000
0.404000000000000
0.418000000000000
0.456000000000000
0.489000000000000
ydata1:
0.983870967741936
0.967741935483871
0.951612903225807
0.935483870967742
0.919354838709677
0.903225806451613
0.887096774193548
0.870967741935484
0.854838709677419
0.838709677419355
0.822580645161290
0.806451612903226
0.790322580645161
0.774193548387097
0.758064516129032
0.741935483870968
0.725806451612903
0.709677419354839
0.693548387096774
0.677419354838710
0.661290322580645
0.645161290322581
0.629032258064516
0.612903225806452
0.596774193548387
0.580645161290322
0.564516129032258
0.548387096774193
0.532258064516129
0.516129032258064
0.500000000000000
0.483870967741935
0.467741935483871
0.451612903225806
0.435483870967742
0.419354838709677
0.403225806451613
0.387096774193548
0.370967741935484
0.354838709677419
0.338709677419355
0.322580645161290
0.306451612903226
0.290322580645161
0.274193548387097
0.258064516129032
0.241935483870968
0.225806451612903
0.209677419354839
0.193548387096774
0.177419354838710
0.161290322580645
0.145161290322581
0.129032258064516
0.112903225806452
0.0967741935483870
0.0806451612903230
0.0645161290322580
0.0483870967741930
0.0322580645161290
0.0161290322580639
0
3楼2015-01-23 19:12:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

yongcailiu

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
makechange74: 金币+5, ★★★很有帮助 2015-01-23 19:13:55
参数没有加进去呀,当然调用错误了。eps=1.0e-3;下面一行的GN替换成GN(f,x0,var,eps)试一下
2楼2015-01-23 08:56:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yongcailiu

金虫 (小有名气)

z1-z5是符号?如果如此的话,我没有见过Gauss-Newton法使用在这种场合下的。
4楼2015-01-24 11:14:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

makechange74

铁虫 (小有名气)

引用回帖:
4楼: Originally posted by yongcailiu at 2015-01-24 11:14:35
z1-z5是符号?如果如此的话,我没有见过Gauss-Newton法使用在这种场合下的。

Gauss-Newton法可以用求解最小非线形二乘法,在文献上看到的,此外为了改进Gauss-Newton算法,又提出了LM算法。
z1-z5是变量,也就是这个非线形最小二乘法要求解的值
5楼2015-01-25 09:45:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 科研人应该花精力去思考如何解决问题,而不是去凝练问题 +4 瞬息宇宙 2026-09-01 8/400 2026-09-02 10:35 by 瞬息宇宙
[基金申请] 我不理解! +16 Edward_pc 2026-08-26 24/1200 2026-09-02 10:32 by newfuzzy1
[基金申请] 学科评审组评审是指会评吗? +5 瞬息宇宙 2026-08-31 5/250 2026-09-02 10:13 by 雨冰共舞
[基金申请] 国自然面上复盘~欢迎讨论 (金币+15) +17 晴天加油 2026-08-26 19/950 2026-09-02 10:07 by 奶奶的心意
[文学芳草园] 梦想 +5 myrtle 2026-08-26 8/400 2026-09-02 02:42 by Leogzhya
[基金申请] 面上合作单位盖章 +6 ssyjh 2026-08-27 9/450 2026-09-01 20:01 by huagongfeihu
[基金申请] 面上函评意见出来了,像什么等级? 20+4 Tsingking1 2026-08-27 17/850 2026-09-01 19:51 by 超级无敌华子
[基金申请] 为什么资助数各大高校都创新高,自己申请怎么就这么难 +13 Kittylucky 2026-08-27 14/700 2026-09-01 11:06 by feng6531
[论文投稿] 小白求助 投论文要求的highlights应该如何写 5+3 l1963982152 2026-08-29 4/200 2026-09-01 09:04 by 北京莱茵编辑
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +7 gdd2018 2026-08-28 12/600 2026-09-01 08:32 by 尼古拉斯小虫
[基金申请] 国社科又开始会评了,不知道这次命运如何 +7 雨打竹帘 2026-08-30 11/550 2026-08-31 23:16 by hittle2008
[基金申请] 基金未中,这种答复是模板吗? +6 zhaosm1982 2026-08-27 7/350 2026-08-31 21:18 by qdxxmc
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +6 yuleib84 2026-08-26 7/350 2026-08-31 19:46 by 鱼翔浅底1
[基金申请] 面上意见出来了 +12 黄鸟于飞Chao 2026-08-29 23/1150 2026-08-31 18:57 by 黄鸟于飞Chao
[基金申请] 中青基了要发朋友圈吗? +7 349506619 2026-08-28 7/350 2026-08-31 13:39 by 冼亮淀粉酶
[基金申请] 基金不中,共勉 +12 eulota 2026-08-26 12/600 2026-08-31 08:42 by ZJTJZ
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 11/550 2026-08-30 07:57 by gouxfjh
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
信息提示
请填处理意见