⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 线性回归.txt

📁 用于线性回归的C语言源程序,经过调试,没问题
💻 TXT
字号:
经验公式为Q=a*P^b,(Q和P均为实测值,测量3次以上)       
  如何根据实测值用何种算法回归得到较好的a,b值?       
  最好给出代码例子,什么语言都可以的  
对n个数据点(xi,   yi),   i   =   0,   1,   ...,   n   -   1用直线y   =   ax   +   b做回归分析~   
    
  #include   <math.h>   
    
  //   输入量:   
  //   x   -   存放自变量x的n个值的数组首地址.   
  //   y   -   存放与自变量x的n个值对应的随机变量观测值的数组首地址.   
  //   n   -   观测点数.   
  //   输出量:   
  //   a   -   长度为2的数组,其中a[0]存放回归系数b,   a[1]存放回归系数a.   
  //   dt   -   长度为6的数组,dt[0]为偏差平方和,dt[1]为平均标准偏差,dt[2]为回归平方和,   
  //             dt[3]为最大偏差,dt[4]为最小偏差,dt[5]为偏差平均值.     
  void   GetCoefficient(double   *x,   double   *y,   int   n,   double   *a,   double   *dt)   
  {     
          int           i;   
          double     xx,   yy,   e,   f,   q,   u,   p,   umax,   umin,   s;   
    
          xx   =   0.0;   yy   =   0.0;   
          for(i   =   0;   i   <=   n   -   1;   i   ++)   
          {     
                  xx   =   xx   +   x[i]   /   n;     
                  yy   =   yy   +   y[i]   /   n;   
          }   
          e   =   0.0;   f   =   0.0;   
          for(i   =   0;   i   <=   n   -   1;   i   ++)   
          {     
                  q   =   x[i]   -   xx;   e   =   e   +   q   *   q;   
                  f   =   f   +   q   *   (y[i]   -   yy);   
          }   
          a[1]   =   f   /   e;   a[0]   =   yy   -   a[1]   *   xx;   
          q   =   u   =   p   =   0.0;   
          umax   =   0.0;   umin   =   1.0e+30;   
          for(i   =   0;   i   <=   n   -   1;   i   ++)   
          {     
                  s   =   a[1]   *   x[i]   +   a[0];   
                  q   =   q   +   (y[i]   -   s)   *   (y[i]   -   s);   
                  p   =   p   +   (s   -   yy)   *   (s   -   yy);   
                  e   =   fabs(y[i]   -   s);   
                  if(e   >   umax)   umax   =   e;   
                  if(e   <   umin)   umin   =   e;   
                  u   =   u   +   e   /   n;   
          }   
          dt[1]   =   sqrt(q   /   n);   
          dt[0]   =   q;   dt[2]   =   p;   
          dt[3]   =   umax;   dt[4]   =   umin;   dt[5]   =   u;   
  }  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -