📄 最小二乘拟合.cpp
字号:
/* 目的:为了解出不定个数的方程。*/
#include<iostream.h>
#include<iomanip.h>
void main()
{
double a,b,c;
double x=24;
double y[11]={2368.07,2045.71,1033.87,530.667,523.667,1799.03,1707.42,1169.67,2146.77,2263.33,2330.97};
double z[11]={240080,179166,45761.4,12056.2,11740.2,138562,124809,58572.2,197305,219313,232615};
double d[11]={992.219,844.88,426.989,220.227,219.416,750.196,715.409,498.278,905.939,961.917,988.33};
double sm1,sm2=0,sm3=0,sm4=0,sm5=0,sm6=0,sn1=0,sn2=0,sn3=0;
double D[4]={0};
int i;
sm1=x*x*11;
for(i=0;i<11;i++)
{
sm2+=x*y[i];
sm3+=x*z[i];
sm4+=y[i]*y[i];
sm5+=y[i]*z[i];
sm6+=z[i]*z[i];
sn1+=x*d[i];
sn2+=y[i]*d[i];
sn3+=z[i]*d[i];
}
cout<<setw(15)<<sm1<<setw(15)<<sm2<<setw(15)<<sm3<<"|"<<sn1<<endl;
cout<<setw(15)<<sm2<<setw(15)<<sm4<<setw(15)<<sm5<<"|"<<sn2<<endl;
cout<<setw(15)<<sm3<<setw(15)<<sm5<<setw(15)<<sm6<<"|"<<sn3<<endl;
D[0]=sm1*sm4*sm6+sm2*sm5*sm3+sm3*sm2*sm5-sm3*sm4*sm3-sm2*sm2*sm6-sm1*sm5*sm5;
D[1]=sn1*sm4*sm6+sm2*sm5*sn3+sm3*sn2*sm5-sm3*sm4*sn3-sm2*sn2*sm6-sn1*sm5*sm5;
D[2]=sm1*sn2*sm6+sn1*sm5*sm3+sm3*sm2*sn3-sm3*sn2*sm3-sn1*sm2*sm6-sm1*sm5*sn3;
D[3]=sm1*sm4*sn3+sm2*sn2*sm3+sn1*sm2*sm5-sn1*sm4*sm3-sm2*sm2*sn3-sm1*sn2*sm5;
c=D[1]/D[0];
b=D[2]/D[0];
a=D[3]/D[0];
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"c="<<c<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -