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

📄 高斯列主元法解方程组.cpp

📁 计算方法程序,包括高斯列主元法,复化simpson,标准四阶龙格库塔,Seidel迭代,Romberg算法
💻 CPP
字号:
#include<iomanip.h>
#include<math.h>

class Gauss
{
	 int M;double *a,*b,*x;
public:
	Gauss(int M1,double a1[],double b1[])
	{	
		M=M1;
		a=new double[M*M];b=new double[M];x=new double[M];
	    for(int k=0;k<M*M;k++)a[k]=a1[k];
	    for(int k1=0;k1<M;k1++)b[k1]=b1[k1];
		xiaoyuan();
		zhi();
	}
	void xiaoyuan()
	{

	   	 for(int j=0;j<M;j++)
		{
			zhuyuan(j);
		for(int j1=j+1;j1<M;j1++)
		  for(int j2=j;j2<M;j2++)
		  {a[j1*M+j2]=a[j1*M+j2]-a[j*M+j]*a[j*M+j2]/a[j1*M+j];}
		 }
	}
	void zhuyuan(int i)
	{	double max=a[i*M+i];
	  for(int i1=i+1;i1<M;i1++)
	  {
		  if(ABS(max)<ABS(a[i-M+i]))
		  {
		    for(int i2=i;i2<M;i2++)
			{double a1,b1;
		    a1=a[i*M+i2];b1=b[i];
		    a[i*M+i2]=a[i1*M+i2];b[i]=b[i1];
		    a[i*M+i2]=a1;b[i]=b1;
			}
		  }
	  }
	}
	void zhi()
	{
		x[M-1]=b[M-1]/a[M*M-1];
		for(int k=M-2;k>=0;k--)
		{double s=0;
			for(int k1=k+1;k1<M;k1++)
				s+=a[k*M+k1]*x[k1];
		    x[k]=(b[k]-s)/a[k*M+k];
		}
		for(int k2=0;k2<M;k2++)cout<<"x"<<k2+1<<"="<<x[k2]<<endl;
	}
	double ABS(double g)
	{if(g<0)return -g;
	else return g;
	}
};

void main()
{
	cout<<"此程序验证高斯列主元法解方程组."<<endl;
	cout<<"以求取:"<<endl<<"0.101*x1+2.304*x2+*x=1.183"<<endl;
	cout<<"-1.347*x1+3.712*x2+4.623*x3=2.137"<<endl<<"-2.835*x1+1.072*x2+5.643*x3=3.035"<<endl;
	cout<<"的根为例"<<endl;
	double a[]={0.101,2.304,3.555,-1.347,3.712,4.623,-2.835,1.072,5.643};
	double b[]={1.183,2.137,3.035};
	Gauss(3,a,b);
}




⌨️ 快捷键说明

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