单片机c语言拟合二次曲线y=a0+a1x+a2x^2

本文介绍了如何使用C语言在单片机上进行抛物线拟合,以显示AD值与距离的关系。通过最小二乘法,将x和x^2视为变量,构建正则方程并求解逆矩阵,最终实现抛物线的数学模型。代码简化了伴随矩阵的计算,减少了运算量,并与Excel结果进行了比较。
摘要由CSDN通过智能技术生成

作业需要,需要在单片机上显示距离与ad值大小的关系,理论推倒得到这两个的关系是抛物线,因此查书写了这段c语言程序。
具体的证明过程我也不会,书上提到了对于抛物线采用多项式拟合的方法,好像是将x,x^2,看成了两个变量。
但核心公式只有一个,下面这个正则方程组
在这里插入图片描述
把上面这个方程简写成 xa=y(x、a、y分别对应一个矩阵)可以得到a=x^(-1)y
其中x^(-1)表示x的逆矩阵
具体的算法步骤是
1.求x的伴随矩阵
2.对矩阵x进行行列式操作
3.x的逆矩阵=x的伴随矩阵/x的行列式的值
4计算x^(-1)y
在下面的代码中对求伴随矩阵进行了简化,减少了一点运算量。

#include "stdio.h"
#ifndef uint8
 #define uint8 unsigned short int
#endif
char Least_Squarel_Linear_Fit_y_2a0_4a1x_4a2xx(float *x,float *y,uint8 n,float *a0,float *a1,float *a2)
{
  float temp=0;
  float x0=n,x1=0,x2=0,x3=0,x4=0,x0y1=0,x1y1=0,x2y1=0;//表示各项的求和
  float x0x2,x0x3,x0x4,x1x1,x1x2,x1x3,x1x4,x2x2,x2x3,x2x4,x3x3;
  float a_banshui[3][3],a_ni[3]
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值