📄 gm(1,1).cpp
字号:
#include <iostream.h>
#include <math.h>
#include "matrix.h"
int main()
{ int m=1,n=8;
cout<<"请输入数据的长度"<<endl;
//cin>>n;
double value[]={1.11,1.45,1.93,2.08,2.52,2.92,3.20,3.96};
matrix gm(1,n,value);
matrix AA(gm);
/*matrix II(1,n-1);
for(int i=1;i<=n;n++)
{II.setElement(1,i,1);
}
*/
double sum=0;
for(int i=1;i<=n;i++)
{sum=sum+AA.getElement(1,i);
AA.setElement(1,i,sum);
}
matrix PP(1,n-1);
for( i=1;i<n;i++)
{double j=0;
j=AA.getElement(1,i)+AA.getElement(1,i+1);
j=-j/2;
PP.setElement(1,i,j);
}
matrix BB(n-1,2);
for( i=1;i<=n-1;i++)
{ BB.setElement(i,1,PP.getElement(1,i));
BB.setElement(i,2,1);
}
matrix XX(1,n-1);
for( i=1;i<=n-1;i++)
{XX.setElement(1,i,gm.getElement(1,i+1));}
matrix NN(XX.tran());
matrix MM(2,1);
matrix RR(2,2);
matrix BV(2,n-1);
BV=BB.tran();
RR=BV*BB;
cout<<"1111111111111111111112"<<endl;
//MM=RR.invert()*BB.tran()*NN;
MM=RR.invert()*BV*NN;
cout<<"22222222222222222222222"<<endl;
double a=MM.getElement(1,1);
double u=MM.getElement(2,1);
matrix Xz(1,n);
double sum1=0;
double e=2.71828;
for( i=0;i<n;i++)
{ sum1=(gm.getElement(1,1)-u/a)*pow(e,-a*i)+u/a;
Xz.setElement(1,i+1,sum1);
}
matrix ZZ(1,n);
ZZ.setElement(1,1,Xz.getElement(1,1));
for( i=n-1;i<=1;i--)
ZZ.setElement(1,i+1,Xz.getElement(1,i+1)-Xz.getElement(1,i));
/////////////////////////
//开始求误差//
matrix EOR(1,n);
for( i=1;i<=n;i++)
EOR.setElement(1,i,gm.getElement(1,i)-ZZ.getElement(1,i));
sum=0;
for( i=1;i<=n;i++)
sum+=gm.getElement(1,i);
double xm=1/n*sum;
sum=0;
for( i=1;i<=n;i++)
sum+=EOR.getElement(1,i);
double em=1/n*sum;
sum=0;
for( i=1;i<=n;i++)
sum+=pow((gm.getElement(1,i)-xm),2);
double sx=1/n*sum;
sum=0;
for( i=1;i<=n;i++)
sum+=pow((EOR.getElement(1,i)-em),2);
double se=1/n*sum;
//////
/////求验后方差
double c=sqrt(se/sx);
cout<<c<<endl;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -