最小化Matlab中的L-infinity范数

时间:2013-12-04 00:45:04

标签: matlab optimization linear-programming

我有这个MATLAB代码,我正在尝试实现这个问题的最佳答案中解释的方法:https://stats.stackexchange.com/questions/12546/software-package-to-solve-l-infinity-norm-linear-regression 以下是我使用的以数据点开头的代码:

x = [
    0
    0.101010101010101
    0.202020202020202
    0.303030303030303
    0.404040404040404
    0.505050505050505
    0.606060606060606
    0.707070707070707
    0.808080808080808
    0.909090909090909
    ];
y = [
    0.052993311292562
    14.923120014175920
    1.974502763975613
    -2.205773310050583
    -0.052548781318830
    2.935428041987883
    0.134606520161892
    0.146742215922384
    -0.418386565682831
    1.702041272689124
    ];
A1 = [x,ones(length(y),1),-ones(length(y),1)];
A2 = [-x,-ones(length(y),1),-ones(length(y),1)];
A = [A1;A2];
f = [0;0;1];
linprog(f,A,[y;-y])

关键是通过最小化线和数据点之间残差的 L-infinity范数来找到最佳拟合(即线)的参数(斜率和交点)。我已经为普通最小二乘(最小化L-2范数)以及 L-1拟合做了同样的问题。从这些方法绘制的线非常适合数据点。但无论我做什么,似乎无法使这个L-infinity适合工作所以我来找你帮忙,任何提示赞赏。

1 个答案:

答案 0 :(得分:2)

你的不平等中 t 的标志是错误的。尝试

A1 = [x,ones(length(y),1),-ones(length(y),1)];
A2 = [-x,-ones(length(y),1),-ones(length(y),1)];