📄 二次拟合.cpp
字号:
#include<iomanip.h>
#include<fstream.h>
#include<iostream.h>
double sum1(double a[],double b[],int n) //n表示数组的大小 x*y的累加和
{
double sum=0;
for(int i=0;i<n;i++)
sum+=a[i]*b[i];
return sum;
}
double sum2(double a[],int n) //x的累加和
{
double sum=0;
for(int i=0;i<n;i++)
sum+=a[i];
return sum;
}
double sum3(double a[],int n) //x平方的累加和
{
double sum=0;
for(int i=0;i<n;i++)
sum+=a[i]*a[i];
return sum;
}
double sum4(double a[],double b[],int n) //求y平方乘以x的累加和
{
double sum=0;
for(int i=0;i<n;i++)
sum+=a[i]*b[i]*b[i];
return sum;
}
double sum5(double a[],int n) //求x的3次方等的累加和
{
double sum=0;
for(int i=0;i<n;i++)
sum+=a[i]*a[i]*a[i];
return sum;
}
double sum6(double a[],int n) //求x的4次方等的累加和
{
double sum=0;
for(int i=0;i<n;i++)
sum+=a[i]*a[i]*a[i]*a[i];
return sum;
}
void lsql(double m[],double n[],int i,double& a,double& b,double& c)
{
double a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,b1,b2,b3,b4;
a0=i;
a1=sum2(n,i);
a2=sum3(n,i);
a3=sum2(m,i);
a4=sum2(n,i);
a5=sum3(n,i);
a6=sum5(n,i);
a7=sum1(m,n,i);
a8=sum3(n,i);
a9=sum5(n,i);
a10=sum6(n,i);
a11=sum4(m,n,i);
b1=a0*(a10*a5-a6*a9)-a1*(a4*a10-a6*a8)+a2*(a4*a9-a5*a8);
b2=a3*(a10*a5-a6*a9)-a1*(a7*a10-a6*a11)+a2*(a7*a9-a5*a11);
b3=a0*(a10*a7-a6*a11)-a3*(a4*a10-a6*a8)+a2*(a4*a11-a7*a8);
b4=a0*(a11*a5-a7*a9)-a1*(a4*a11-a7*a8)+a3*(a4*a9-a5*a8);
a=b2/b1;
b=b3/b1;
c=b4/b1;
}
void main()
{
ifstream f1("c.txt");
double e[128];
int n=0;
while(f1>>e[n])
{
n++;
}
ifstream f2("d.txt");
double f[128];
int m=0;
while(f2>>f[m])
{
m++;
}
double a,b,c;
int i=29;
lsql(e,f,i,a,b,c);
cout<<a<<' '<<b<<' '<<c<<' '<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -