教您在微控制器上执行插值算法

第一步:了解所学,但不了解。

最无聊的数学公式在这里。

在数值分析中,拉格朗日插值是以18世纪法国数学家约瑟夫·拉格朗日的名字命名的。

多项式插值方法。

在许多实际问题中,功能用于表达某些内部关系或规律,并且许多功能只能通过实验和观察来理解。

例如,为了在实践中观察一定的物理量并在几个不同的位置获得相应的观察值,拉格朗日插值法可以找到一个多项式,该多项式恰好在每个观察点处取观察值。

这样的多项式称为拉格朗日(插值)多项式。

从数学上讲,拉格朗日插值法可以提供多项式函数,该函数可以通过二维平面上的多个已知点。

拉格朗日插值最早是由英国数学家爱德华·沃林(Edward Waring)于1779年发现的,很快(1783年)由莱昂哈德·欧拉(Leonhard Euler)发现。

1795年,拉格朗日(Lagrange)在他的《师范学校数学基础课》一书中发表了这种插值方法,从那时起,他的名字就一直与这种方法相关联。

步骤2:构造拉格朗日插值算法函数,并使用C / C ++语言实现//将插值节点的数量预定义为1000,并根据在控制台中输入的数量num确定插值节点const int的数量N = 1000 ; //拉格朗日插值算法float lglr(float x [],float y [],int n,float t){float yResult = 0.0; // LValue [N]存储每个解插值基函数float LValue的通用项[N]; //循环变量k,minint k,m; //内插基函数temp1,temp2,float temp1,temp2中的上下累加; for(k = 0; k {temp1 = 1.0; temp2 = 1.0; for(m = 0; m {if(m == k){continue;} temp1 * =(tx [m]); temp2 * =(x [k] -x [m]);} LValue [k] = temp1 / temp2;} for(int i = 0; i {yResult + = y [i] * LValue [i];} return yResult;}步骤3 :测试线性插值效果1.写入输入算法发送对角线的3个点以预测此间隔中的其他点,发现预测的线性值非常好,并且线性非常充分2.相同将正弦曲线的3个点发送到书面算法,以预测此间隔中的其他点,发现预测的正弦曲线不理想,并且相关性很差; 3.增加发送到正弦中的点数将曲线写成10个点来预测该间隔内的其他点,发现预测的正弦曲线满足要求,并且相关性很好。

4.以下是使用matlab绘制的图像,即线性3点,正弦3、5、10和原始值。

第四步:移植到单片机上,用串口输出测试插补效果,效果还可以!第4步:高级完善,有点不愿意,使用Qt构建界面,并进行一些可视化处理。

不要说效果还好,Qt接口代码放入有兴趣一起改进https://gitee.com/lumengcode/my-qt/tree/master/MathTool/MathTool插值的gitee中题外话:关于插值算法:您可以继续改进牛顿插值,三样条插值等,非常有趣!免责声明:本文内容经21ic授权后发布,版权归原作者所有。

该平台仅提供信息存储服务。

本文仅代表作者个人观点,并不代表该平台的立场,例如,如果您有任何疑问,请与我联系,谢谢!