c++一元一次回归方程

更新时间:2024-03-12 11:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一元一次回归方程

C++程序

#include #include

void input(int[],int); //声明所有的函数 void output(int t[],int,double,double); double _mx(int); double _my(int t[],int);

double _b(int t[],int,double,double); double _a(double,double,double); double jieguo(double,double,int);

double _cor(int [],int,double,double); void main() {

int t[10],n=10; //t[]存放数据,n表示长度,总长为10

double a,b,mx,my; //a和b为方程系数, mx为Xi的平均值 my为Yi平均值

input(t,n); //调用输入函数

mx=_mx(n); //给mx赋值 以下同理

my=_my(t,n);

b=_b(t,n,mx,my); a=_a(mx,my,b);

output(t,n,a,b); //调用输出函数

cout<<\并以此预测x=20时 y= :\

double cor=_cor(t,n,mx,my); //调用_cor函数 cout<<\通过计算相关系数cor得出 :cor=\

if(cor==0)

cout<<\这条直线完全没有用处\ if(cor==1)

cout<<\这条直线完全符合实际情况\ if(cor>0.81)

cout<<\这条直线就很好了\ }

void input(int t[],int n) //输入函数 {

cout<<\请按以下格式输入样本数据------------------------\

cout<<\ for(int i=0;i

{

else cout<<\这条直线不和实际\

cout<<\ cin>>t[i]; cout<

void output(int t[],int n,double a,double b) //输出函数 {

double sum1=0,sum2=0,sum3=0,d,e,f;

for(int i=0;i

sum1+=t[i];

}

d=sum1/n; //求y的平均值

for(i=0;i

sum2+=(t[i]-d)*(t[i]-d);

e=sqrt(sum2/n);

for(i=1;i<=n;i++) //求x的平均值 sum3+=i; f=sum3/n;

cout<<\整理分析数据---------------------------------\ }

double _mx(int n) //求xi的平均值 {

int i,sum=0; }

double _my(int t[],int n) //求yi的平均值 {

int i,sum=0;

for(i=0;i

sum+=t[i]; //sum为Yi项的和

for(i=1;i<=n;i++)

sum+=i; //sum为xi项的和

cout<<\对以上数据进行分析得 :\\n\

cout<<\的平均值为 :\为y平均 cout<<\其均方差为 :\为y的均方差 cout<<\回归方程式为 : y=\cout<<\的平均值为:\

return sum/n; //返回平均值

return sum/n; //返回平均值

}

double _b(int t[],int n,double mx,double my) //求方程系数b {

double fenzi=0,xfangcha=0; for(int i=1;i<=n;i++) {

fenzi+=(i-mx)*(t[i-1]-my);

xfangcha+=(i-mx)*(i-mx); // X样本方差公式 }

return fenzi/xfangcha; //返回b值 }

double _a(double mx,double my,double b) //求方程的系数a { }

double jieguo(double a,double b,int x)//求回归方程 {

return a+b*x; //方程为 y=a+bx }

double _cor(int t[],int n,double mx,double my) //编写函数测试相关系数cor {

double a1=0,b1=0,c1=0;

for(int i=1;i<=n;i++) {

a1+=(i-mx)*(t[i-1]-my);

return my-b*mx; //返回系数a

b1+=(i-mx)*(i-mx); c1+=(t[i-1]-my)*(t[i-1]-my);

} a1=a1/n; b1=sqrt(b1/n);

c1=sqrt(c1/n); }

double cor=a1/(b1*c1);

return cor; //返回double型的cor值

本文来源:https://www.bwwdw.com/article/crs8.html

Top