[技术讨论]

外推算法的数学问题

[复制链接]
1440|37
手机看帖
扫描二维码
随时随地手机跟帖
kktron|  楼主 | 2021-12-3 10:59 | 显示全部楼层 |阅读模式
本帖最后由 kktron 于 2021-12-3 21:57 编辑

标定数据如下:
输入X                输出 Y
2479.8                200
2538.6                190
2598.8                180
2663.3                170
2726.2                160
2790.8                150
2857.3                140
2928.2                130
2998.7                120
3071.8                110
3145.4                100
3221.3                90
3301.5                80
3381.5                 70
3463                        60
3549.6                50
3632.6                40
3722.7                30
3815.5                 20
3903                         10
3996.9                  0
4091.1                -10
4190.8                -20
4287.6                -30
4383.4                -40
---------------------------------------------------
如:求输入X=4383.50时  Y的值
如:求输入X=5001.23 时 Y的值
如:求输入X=1234.56 时 Y的值
--------------------------------------------------
已经用上述标定的数据 最小二乘法 得到拟合y=a0+a1*x^3+a2*x^2+a3*x+a4试过了,
标定的数据内,比较精准,标定外的,算出来误差很大
再有就是临界地方比如X=4385.60时  Y应该-40.1样子,但得到确实-38.0,反而比临界值大了。
关键存在正值最大值后倒回变小问题严重问题。所以最小二乘法肯定不适合的

接着用切比雪夫算法 也拟合了公式,发现一样问题,标定内非常转,标定外的外推数据都不太理想

请问有什么算法可以利用上面那些X,Y标定 拟合一个公式外推,得到标定外的数据呢(不需要非常精确)?

点击放大

点击放大

使用特权

评论回复
一周一天班| | 2021-12-3 11:51 | 显示全部楼层
分段用拟合曲线

使用特权

评论回复
一周一天班| | 2021-12-3 11:53 | 显示全部楼层
或者直接用这些数据做插值查询

使用特权

评论回复
kktron|  楼主 | 2021-12-3 13:00 | 显示全部楼层
一周一天班 发表于 2021-12-3 11:53
或者直接用这些数据做插值查询

插值法可以算  这些散点x y 关系数据外的吗?

使用特权

评论回复
waaini| | 2021-12-3 15:28 | 显示全部楼层
把Y作为输入参数是否会好点?然后加个偏置做纯正数拟合

使用特权

评论回复
kktron|  楼主 | 2021-12-3 15:58 | 显示全部楼层
本帖最后由 kktron 于 2021-12-3 16:12 编辑
waaini 发表于 2021-12-3 15:28
把Y作为输入参数是否会好点?然后加个偏置做纯正数拟合

谢谢!
但实际应用时,产品是读到X值,要推Y的值
反过来的话,应用就不对了
另外这里Y看着 200 190  .。。。递减,实际标定不一样这个值,可能 200  190  150.45  90.33  80.2   70   10  0.22   -20.33  -90.23   下去 缺一部分的。

使用特权

评论回复
xch| | 2021-12-3 17:02 | 显示全部楼层
拉格朗日多项式呢?

使用特权

评论回复
kktron|  楼主 | 2021-12-3 17:43 | 显示全部楼层
本帖最后由 kktron 于 2021-12-3 17:50 编辑
xch 发表于 2021-12-3 17:02
拉格朗日多项式呢?

1. 最小二乘法   ,  线段内较好, 外推部分 效果较大,但存在标定点错误问题及最高点倒退值
2. 切比雪夫,        线段内极好, 外推部分 效果一般 ,也存在曲线问题导致变高后有变低  
3. 外插比例法    , 线段内未试, 外推部分 效果非常一般
4. 拉格朗日,        线段内未知, 外推部分 暂时C代码未实现
目前线段内用的切比雪夫,拟合的6项式,效果极好
但两头的外推部分 找不到合适的方案

使用特权

评论回复
kktron|  楼主 | 2021-12-3 18:10 | 显示全部楼层
//拉格朗日插值法计算x处估计值
double lagrange(int n,double *px,double *py,double x)
{
        int i,j;
        double fn=0.0,k;
        for(i=0;i<=n;i++)
        {
                k=1.0;
                for(j=0;j<=n;j++)
                {
                        if(j!=i)
                                k=k*(x-px[j])/(px[i]-px[j]);
                        else
                                k=k;

                }
                fn=fn+py[i]*k;
        }
        return fn;
}

试了下, 不对都是错的值输出

使用特权

评论回复
R2D2| | 2021-12-3 18:30 | 显示全部楼层
既然你能测试到标定范围以外的数据,那把外面的数据也拿进来拟合曲线不就完事了吗?

使用特权

评论回复
kktron|  楼主 | 2021-12-3 18:38 | 显示全部楼层
R2D2 发表于 2021-12-3 18:30
既然你能测试到标定范围以外的数据,那把外面的数据也拿进来拟合曲线不就完事了吗? ...

是的,可以标定那简单了
但情况比较特殊,标定的数据被限制了只能几组。
所以需要一个外推法来计算Y,X是处理器可以采集得到的

使用特权

评论回复
R2D2| | 2021-12-3 18:42 | 显示全部楼层
kktron 发表于 2021-12-3 18:38
是的,可以标定那简单了
但情况比较特殊,标定的数据被限制了只能几组。
所以需要一个外推法来计算Y,X是 ...

那就检查两组公式——有标定外数据生成的,仅仅用标定数据生成的,之间的差异不就看出问题了吗?

使用特权

评论回复
elife| | 2021-12-3 20:09 | 显示全部楼层
感觉楼主这个是做不出来的,样本以外,一切皆有可能。给你所有的过去股票数据,也推不出明天的曲线。除非你到明天看看,再计入样本。但也推不出后天的。

使用特权

评论回复
kktron|  楼主 | 2021-12-3 21:38 | 显示全部楼层
elife 发表于 2021-12-3 20:09
感觉楼主这个是做不出来的,样本以外,一切皆有可能。给你所有的过去股票数据,也推不出明天的曲线。除非你 ...

应该可以,数据 X,Y 总体看是有点规律的,就是求不出合适的拟合外推公式,请看1F补充图

使用特权

评论回复
xch| | 2021-12-4 01:45 | 显示全部楼层
kktron 发表于 2021-12-3 18:10
//拉格朗日插值法计算x处估计值
double lagrange(int n,double *px,double *py,double x)
{

计算溢出了。

把数组规模缩小5倍。用long double 变量计算可以得出正确结果。

使用特权

评论回复
xch| | 2021-12-4 01:49 | 显示全部楼层
kktron 发表于 2021-12-3 18:10
//拉格朗日插值法计算x处估计值
double lagrange(int n,double *px,double *py,double x)
{

1627761aa58b8b89d2.png

使用特权

评论回复
xch| | 2021-12-4 10:04 | 显示全部楼层
kktron 发表于 2021-12-3 21:38
应该可以,数据 X,Y 总体看是有点规律的,就是求不出合适的拟合外推公式,请看1F补充图
...

我验证过拉格朗日多项式。没问题。出问题的是因为计算溢出。25个参考数组没必要都用取靠近的5个即可。

使用特权

评论回复
一周一天班| | 2021-12-4 11:02 | 显示全部楼层
你从4000开始单独做个拟合不就可以了么

使用特权

评论回复
R2D2| | 2021-12-4 15:12 | 显示全部楼层
elife 发表于 2021-12-3 20:09
感觉楼主这个是做不出来的,样本以外,一切皆有可能。给你所有的过去股票数据,也推不出明天的曲线。除非你 ...

有道理,如果楼主能用3个以上的传感器做测试,看外推数据的误差有没有规律,如果找不到规律,那么你的说法就是对的,楼主的企图是毫无意义的。

使用特权

评论回复
csdnpurple| | 2021-12-4 15:45 | 显示全部楼层
R2D2 发表于 2021-12-4 15:12
有道理,如果楼主能用3个以上的传感器做测试,看外推数据的误差有没有规律,如果找不到规律,那么你的说 ...

这个叫   “没有免费的午餐定理”  还有一个叫“奥**剃刀原理” 或许对楼主有帮助

使用特权

评论回复
评论
kktron 2021-12-4 21:34 回复TA
头次听说,学习下,谢谢! 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

44

帖子

0

粉丝