给定数据点(xi ,yi),用最小二乘法拟合数据的多项式,并求平方误差。
有了之前多个程序的磨练,这次程序非常简单,用公式算出矩阵中的待求数值,再用高斯消元法求出a0和a1,写出拟合方程,再带入x,y值求出误差平方和即可。
代码
#include<stdio.h>
#include<math.h>
int i,j,k;
float x[10000];
float y[10000];
float z[10000];
float l[10000];
float a[10000][10000];
float X1,X2,X3,X4,Y1,Y2,Y3,sum1,sum2,sum3;
int n=7;
int N=2;
int main(){
sum1=0;sum2=1;sum3=1;
printf("输入x值\n");
for(j=0;j<n;j++)
scanf("%f",&x[j]);
printf("输入y值\n");
for(i=0;i<n;i++)
scanf("%f",&y[i]);
for(i=0;i<n;i++)
X1+=x[i];
for(i=0;i<n;i++)
X2+=x[i]*x[i];
for(i=0;i<n;i++)
Y1+=y[i];
for(i=0;i<n;i++)
Y2+=x[i]*y[i];
a[1][1]=7;
a[1][2]=X1;
a[1][3]=Y1;
a[2][1]=X1;
a[2][2]=X2;