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

📄 t2_5.cpp

📁 本题采用的计算方法为:主要用Jacobi迭代和Gauss-Seidel迭代解线性方程组。 Jacobi迭代算法思路:由方程组
💻 CPP
字号:
//  cpp  t2_5源代码  上机练习题2_5
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
const int N=5;
int main()
{
	int i,j;
	double e,ss;
	double aa[N+1][N+1]=
	{
	{0,0,0,0,0,0},
	{0,28,-3,0,0,0},
	{0,-3,38,-10,0,-5},
	{0,0,-10,25,-15,0},
	{0,0,0,-15,45,0},
	{0,0,-5,0,0,30}	
	};
	double bb[N+1]={0,10,0,0,0,0};
	double ii0[N+1]={0,1,1,1,1,1};
	double ii[N+1];	
	cout<<"上机练习题2_5"<<endl;
	//////////////////////////////JACOBI迭代
    do
	{
		for(i=1;i<=N;i++)
		{
			ss=0;
			for(j=1;j<=N;j++)
				if(j!=i)
					ss+=aa[i][j]*ii0[j];			
			ii[i]=(bb[i]-ss)/aa[i][i];
		}
		e=fabs(ii[1]-ii0[1]);   
		for(i=1;i<=N;i++)	         ////找出最大误差
			if(fabs(ii[i]-ii0[i])>e)
				e=fabs(ii[i]-ii0[i]);
		for(i=1;i<=N;i++)
			ii0[i]=ii[i];

	}while(e>=1E-3);
	cout<<"用JACOBI迭代法解方程的结果为:"<<endl;
	for(i=1;i<=N;i++)	
		cout<<"i["<<i<<"]="<<ii[i]<<";";
	cout<<endl;
	////////////////////////////////////////Gauss-Seidel迭代法
	for(i=1;i<=N;i++)
	{
		ii[i]=1;
		ii0[i]=1;
	}
	 do
	{
		for(i=1;i<=N;i++)
		{
			ss=0;
			for(j=1;j<=N;j++)
				if(j!=i)
					ss+=aa[i][j]*ii[j];
			ii[i]=(bb[i]-ss)/aa[i][i];
		}
		e=fabs(ii[1]-ii0[1]);   
		for(i=1;i<=N;i++)	         ////找出最大误差
			if(fabs(ii[i]-ii0[i])>e)
				e=fabs(ii[i]-ii0[i]);
		for(i=1;i<=N;i++)
			ii0[i]=ii[i];
	}while(e>=1E-3);
	cout<<"用Gauss-Seidel迭代法解方程的结果为:"<<endl;
	for(i=1;i<=N;i++)	
		cout<<"i["<<i<<"]="<<ii[i]<<";";
	cout<<endl;
	return 1;
}

⌨️ 快捷键说明

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