📄 double_multiplication.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 + -