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

📄 double_multiplication.h

📁 最小二乘法的算法程序
💻 H
字号:
	 
void  D_Swap(float *a,float *b)  //交换float 类型
 {
 float t;
 t=*a;
 *a=*b;
 *b=t;
 
 }
void I_Swap(int*a,int*b)	//交换INT类型
{
 int t;
 t=*a;
 *a=*b;
 *b=t;

}

int LinEq_GassColum(int n,float *a[],float *b)
{
 int i,j,k,i0;
 float p;
 for(k=0;k<n;k++)
    {
     p=0.0;
     for(i=k;i<n;i++)
        {
        if(fabs(a[i][k])>fabs(p))
          {
           p=a[i][k];
           i0=i;
           }
        }  
    if(fabs(p)<=1.0e-10)return(-1) ;
    if(i0!=k)
      {
       for(j=k;j<n;j++)
             D_Swap(&a[k][j],&a[i0][j]);
       D_Swap(&b[k],&b[i0]);
      }
    if(k!=n-1)
      {
       for(j=k;j<n-1;j++)
          {
           a[k][j+1]/=p;
           for(i=k;i<n-1;i++)
	        
	         a[i+1][j+1]-=a[i+1][k]*a[k][j+1];
	       }
          
       }
      b[k]/=p;
      if(k!=n-1)
        {
	     for(j=k;j<n-1;j++)
	         b[j+1]-=a[j+1][k]*b[k];
	    }
	    
	 }
  for(i=n-2;i>=0;i--)
	 {
	  for(j=i;j<n-1;j++)
	      b[i]-=a[i][j+1]*b[j+1];
	 }
	  return 0;
}
	 

float exponential(int n,float x)
{
       int i;
       float p;
       if(n==0)
       {
          return 1;
       }
	   p=x;
	   for(i=2;i<=n;++i)
	       p*=x;
	   return p;
}	   
float add_x(int n,int m,float x[])
{
       int i;
       float t,p;
       t=0.0;
       for(i=0;i<n;++i)
       {
        p=exponential(m,x[i]);
        t+=p;
       }
return t;
}
float add_x_y(int n,int m,float x[],float y[])
{
       int i;
       float t,p;
       t=0.0;
       for(i=0;i<n;++i)
       {
        p=exponential(m,x[i])*y[i];
        t+=p;
       }
return t;
}
int float_multiple(int n,float x[],float y[],float b[])
{
	//返回值为是否成功,N为点的个数,x为x柱点,y为y柱点,b包含了最后的结果,即系数
	int i,j;
 	float a[2][2],*aa[2];
	for(i=0;i<2;i++)

	{
    	b[i]=add_x_y(n,i,x,y);
    }
 	for(i=0;i<2;i++)
 	{
 		for(j=0;j<2;j++) 
    	{
    		a[i][j]=add_x(n,(i+j),x);
 	 	}
 
	}
	for(i=0;i<2;i++)
     
		aa[i]=a[i];
 
	LinEq_GassColum(2,aa,b);
	return i;
}

⌨️ 快捷键说明

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