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

📄 work3.cpp

📁 作业: 高斯消去法 运行环境:vc 程序语言:c++ 程序源代码:work3.cpp (见附件)
💻 CPP
字号:
// work3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"
#include "stdio.h"
#include "math.h"

#define MAX_N 20

int main(int argc, char* argv[])
{
	int n;
	int i,j,k;
	int line;
	double max,temp;
	static double a[MAX_N][MAX_N],b[MAX_N],x[MAX_N];
	cout<<"输入方程组Ax=b的维数n :"<<endl;
	cin>>n;
	 
    while ((n>MAX_N)||(n<0))
	{
		cout<<"输入点个数必须在范围 1 到"<<MAX_N<<endl;
		cout<<"重新输入n:";
	    cin>>n;
	}

//按行输入系数及解,初始化数组a[i][j],b[i]

	cout<<"按行输入方程组的系数a(i,j),i=0.."<<n-1<<endl;
	for (i=0;i<n;i++)
	{	for (j=0;j<n;j++)
		{
			cin>>a[i][j];
		}
	}
	cout<<"输入方程组右边的值b(i),i=0.."<<n-1<<endl;
	for (i=0;i<n;i++)
	{
		cin>>b[i];
	}
//找出各列最大值
	for (i=0;i<n-1;i++)
	{
		for (j=i+1,line=i,max=fabs(a[i][i]);j<n;j++)
		{
			if (fabs(a[j][i])>max)
			{
				line=j;
				max=fabs(a[j][i]);
			}
		}
//将最大值所在行与当前行交换
		if (i<line)
		{
			temp=b[i];
			b[i]=b[line];
			b[line]=temp;
			for (j=i;j<n;j++)
			{
			    temp=a[i][j];
			    a[i][j]=a[line][j];
			    a[line][j]=temp;
			}
		}
//化简使之成为上三角
		for (j=i+1;j<n;j++)
		{
			temp=-a[j][i]/a[i][i];
			b[j]+=b[i]*temp;
			for (k=i;k<n;k++)
			{
				a[j][k]+=a[i][k]*temp;
			}
		}
	}
//求解方程组的解	
	x[n-1]=b[n-1]/a[n-1][n-1];
	for (i=n-2;i>=0;i--)
	{
		x[i]=b[i];
		for(j=i+1;j<n;j++)
		{
			x[i]-=a[i][j]*x[j];
		}
		x[i]/=a[i][i];
	}
	cout<<"解为:"<<endl;
	for (i=0;i<n;i++)
	{
		cout<<"x["<<i<<"]="<<x[i]<<endl;
	}


	return 0;
}

⌨️ 快捷键说明

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