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

📄 pnihe.cpp

📁 数值分析用抛物线y=a+bx+cx 拟合给定数据
💻 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 + -