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

📄 1.cpp

📁 对计算方法学中求线性方程组的高斯消去法的实现
💻 CPP
字号:
#include<iostream.h>
#include<math.h>
void main()
{   
	int p,n=3;
	double x[3],temp;//采用双精度防止计算中的近似出现不等与0
    double a[3][3]={{2,1,-3},{-1,3,2},{1,2,-2}};
	double b[3]={-1,5,0};
	for(int k=0;k<=n-1;k++)//当k=n-1时用来查看是否有无穷个解
	{
		p=k;
		for(int i=k+1;i<=n-1;i++)//找主元防止除小数溢出
		    if(abs(a[i][k])>abs(a[p][k]))
				p=i;
		for(i=k;i<=n-1;i++)
		{ 
			temp=a[p][i];
			a[p][i]=a[k][i];
			a[k][i]=temp;
		}
		temp=b[p];
		b[p]=b[k];
		b[k]=temp;
		if(a[k][k]==0)
		{ 
			cout<<"有无穷个解"<<endl;
			return ;
		}
		for(i=k+1;i<=n-1;i++)
		{
			temp=-a[i][k]/a[k][k];
			for(int j=k;j<=n-1;j++)//j=k+1也可以,虽然再以下的计算中用不到但将前面的置为0可以检验该段代码
				a[i][j]+=a[k][j]*temp;
			b[i]+=b[k]*temp;
		}
	}
	for(int i=n-1;i>=0;i--)
	{
		temp=0;
		for(int j=i+1;j<=n-1;j++)
			temp+=a[i][j]*x[j];
		x[i]=(b[i]-temp)/a[i][i];
	}
	for(k=0;k<3;k++)
	{
		for(int i=0;i<3;i++)
			cout<<a[k][i]<<" ";
		cout<<b[k]<<endl;
	}
	for(k=0;k<3;k++)
		cout<<x[k]<<endl;


}

⌨️ 快捷键说明

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