.
最小二乘法直线拟合 C 程序
#include
#include
void main()
{
int N;
printf(" 请输入坐标点的个数 \n");
scanf("%d",&N);
float X[50],Y[50];
printf(" 请输入坐标 \n");
int i;
for (i=0;i
{
printf(" 第%d 个点坐标 :",i+1);
scanf("%f,%f",&X[i],&Y[i]);
}
float l1=0,l2=0,l3=0,l4=0;
for (i=0;i
{
l1=l1+X[i];
l2=l2+Y[i];
l3=l3+X[i]*Y[i];
l4=l4+X[i]*X[i];
}
float a=0,b=0;
a=(N*l3-l1*l2)/(N*l4-l1*l1);
b=(l4*l2-l1*l3)/(N*l4-l1*l1);
printf(" 拟合后的直线解析式为 y=%f*x+%f\n",a,b);
}
拟合举例
(太阳能电磁板在不同环境下的伏安特性, R=200 欧)
;.