📄 pnihe.cpp
字号:
#include<iostream.h>
#include<malloc.h>
#include<math.h>
#include<conio.h>
void main()
{int i,m;
float *a;
cout<<"输入m的值:";
cin>>m;
float x[100],y[100];
float power(int ,float);
float *colpivot(float *,int);
c=(float *)malloc(n*(n+1)*sizeof(float));
for(i=0;i<=n;i++)
{ for(j=0;j<=n;j++)
{*(c+i*(n+2)+j)=0.0;
for(t=0;t<=m-1;t++)
*(c+i*(n+2)+j)+=power(i+j,x[t]);
}
*(c+i*(n+2)+n+1)=0.0;
for(j=0;j<=m-1;j++)
*(c+i*(n+2)+n+1)+=y[j]*power(i,x[j]);
}
a=colpivot((float *)c,n+1);
return a;
}
float *colpivot(float *a,int n)
{int i,j,t,k;
float *x,*c,p;
x=(float *)malloc(n*sizeof(float));
c=(float *)malloc(n*(n+1)*sizeof(float));
for(i=0;i<=n-1;i++)
for(j=0;j<+n;j++)
*(c+i*(n+1)+j)=(*(a+i*(n+1)+j));
for(i=0;i<=n-2;i++)
{k=i;
for(j=i+1;j<=n-1;j++)
if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i)))) k=j;
if(k!=i)
for(j=i;j<=n;j++)
{
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
*(c+k*(n+1)+j)=p;
}
for(j=i+1;j<=n-1;j++)
{p=(*(c+i*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=i;t<=n-1;t++)
*(c+j*(n+1)+t)=*(c+j*(n+1)+t)-p*(*(c+i*(n+1)+t));
*(c+j*(n+1)+n)-=*(c+i*(n+1)+n)*p;
}
}
for(int h=0;h<m;h++)
{cout<<"输入x["<<h<<"]的值:"<<endl;
cin>>x[h];}
for(int k=0;k<m;k++)
{cout<<"输入y的值:"<<endl;
cin>>y[k];}
float *approx(float *,float *,int ,int);
a=approx(x,y,m,2);
for(i=0;i<=2;i++)
cout<<"a["<<i<<"]="<<a[i]<<endl;
getch();
}
float *approx(float *x,float *y,int m,int n)
{float *c,*a;
int i,j,t;
for(i=n-1;i>=0;i--)
{
for(j=n-1;j>=i;j--)
(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
}
free(c);
return x;
}
float power(int i,float v)
{
float a=1.0;
while(i--) a*=v;
return a;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -