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

📄 guass.cpp

📁 这是一个计算机专业计算方法的课程试验
💻 CPP
字号:
/*****************************************************************
***~!!~  Program:解决计算方法中的高斯消元法                ~!!~***
***~!!~  Written By:Jacky_Dai                              ~!!~***
***~!!~  Date:2005-11-15                                   ~!!~***
***~!!~  From:JiangSu University of Science and Technology ~!!~***
*****************************************************************/
#include<iostream.h>
#include<math.h>
#define size 3
double Gus[size][size+1]/*存放数据*/,Cur[size+1]/*存放最后所的结果*/;
void main()
{//void input()
    cout.setf(ios::fixed);
	cout.precision(2);
	int fagx,fagy,i,j;
	cout<<"Please input datas:\n";
/************************输入数据**********************/
	for(i=0;i<size;i++)
		for(j=0;j<size+1;j++)
			cin>>Gus[i][j];
		cout<<"**********输入的数据为:*****************\n";
		for(int A1=0;A1<3;A1++)
			for(int B1=0;B1<4;B1++)
			{
				cout<<Gus[A1][B1]<<"  ";
				if(B1==3)cout<<'\n';
			}
/***************************输入结束***************************/
/*************************开始第i次比较,一共进行size-1次***************/
			fagx=fagy=i;//最大值的坐标
			for(i=0;i<2;i++)//i表示行数	
			{
				for(int k=i+1;k<3;k++)//开始寻找主元
				{
					if(Gus[k][i]>Gus[i][i])
					{ fagx=k;fagy=i;}
				}
				cout<<"********第"<<i+1<<"次交换*********\n";			
				for(int I=0;I<4;I++)
				{
					Cur[I]=Gus[i][I];
					Gus[i][I]=Gus[fagx][I];
					Gus[fagx][I]=Cur[I];
				}
				for(int A=0;A<3;A++)    
					for(int B=0;B<4;B++)
					{
						cout<<Gus[A][B]<<"  ";
						if(B==3)cout<<'\n';
					} 
					cout<<"********第"<<i+1<<"次消后*********\n";      
					double Gus_h=Gus[i][i];
					for(int a=i;a<4;a++)//第i行元素化为1
						Cur[a]=Gus[i][a]/Gus_h;
					for(int z=i;z<2;z++)//z为相减次数
					{
						double FABS=fabs(Gus[z+1][i]);//此处是为了避免直接带如而导致的动态变化问题
						if(Gus_h*Gus[z+1][z]<0)//Gus_h=Gus[i][i]
							for(int t=i;t<4;t++)
								Gus[z+1][t]+=FABS*Cur[t];
							else 
								for(int t=i;t<4;t++)
									Gus[z+1][t]+=FABS*Cur[t];
					}
            /*****ADD***********/
	   				for(int A1=0;A1<3;A1++)
						for(int B1=0;B1<4;B1++)
						{
							cout<<Gus[A1][B1]<<"    ";
							if(B1==3)cout<<'\n';
						}
			/*****END_ADD**************/
			}
			cout<<"**********所有工作完成!***********************\n";
/********************************************************************************/
			int s=1;
			Cur[size-1]=Gus[size-1][size]/Gus[size-1][size-1];
			for(int m=1;m>=0;m--)
			{
				int k=size-1,awp;
				for(int n=1;n>=s;n--)
				{
					awp=Gus[m][3];
					Gus[m][3]-=Gus[m][k]*Cur[k];//k=3
					Cur[m]=Gus[m][3];
					Gus[m][3]=awp;
					k--;
				}
				Cur[m]/=Gus[m][m];
				s--;
			}
			for(i=0;i<3;i++)
				cout<<"Cur["<<i<<"]="<<Cur[i]<<" ";
			cout<<'\n';
}

						

⌨️ 快捷键说明

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