确定低阶多项式下界

计算科学 多项式 近似
2021-12-07 13:00:09

我有一个功能f我想用数字确定,我有一堆(x,y)在以下意义上近似函数的对:所有点都满足f(x)y, 大多数点都有f(x)=y(至少达到我需要的准确性),有几点有y明显大于f(x). (这些点来自偶尔失败的模拟退火。)

我相信f可以用一个低阶多项式很好地近似,所以我想找到它位于所有点之下并且尽可能多地命中,但不介意遗漏一些。这是一件很糟糕的事情,所以我想我应该寻找位于所有点下方的最大点,其中最大的点相对于Lp规范,说p=12, 在包含所有xs。

任何关于如何找到这样一个多项式的指针或参考将不胜感激。

1个回答

在回归的语言中,您希望对异常值具有鲁棒性。惩罚近似误差的 1 范数是实现此目的的一种简单方法。这个惩罚,连同近似满足的约束f(xi)yi导致线性程序(可能可以使用专门的方法更有效地解决,但这是显而易见的模型)。下面是 MATLAB 中的概念验证代码(使用工具箱 YALMIP(免责声明,由我开发))

x = (-1:0.1:1)';
y = x.^2+x.^3+.5*x.^4;
y(3) = 3;
y(11)= 7;
plot(x,y,'*')

sdpvar a b c
yApprox = a+b*x+c*x.^2;
Error = norm(y-yApprox,1);
Below = [yApprox <= y];
solvesdp(Below,Error);
hold on;
plot(x,double(yApprox))

请注意,如果您切换到二次目标,这里的模型和数据基本上会产生相同的解决方案

Error = (y-yApprox)'*(y-yApprox);

原因是近似值的上限约束保护解决方案不被拉向异常值(这通常在使用二次误差测量时发生)