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

📄 3107002005_4th_jocabi&gs.cpp

📁 非线性方程组不能用消去和分解法进行求解
💻 CPP
字号:
// 3107002005_4th_jocabi.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream.h>
#include <math.h>
#define Nmax 1000000
#define delta 0.001
double a[5][5]={{28,-3,0,0,0},{-3,38,-10,0,0},{0,-10,25,-15,0},{0,-5,0,0,30},{0,0,-15,45,0}};
double b[5]={10,0,0,0,0};
double x[5]={1,1,1,1,1};double x0[5]={1,1,1,1,1};
int n1,n2;
void mainele()//进行列主元的选取
{
	for(int i=0;i<5;i++)
		for(int j=i+1;j<5;j++)
		{
			if(fabs(a[j][i])>fabs(a[i][i]))
				for(int k=0;k<5;k++)
				{
					double qu=a[i][k];
					a[i][k]=a[j][k];
					a[j][k]=qu;
					qu=b[i];
					b[i]=b[j];
					b[j]=qu;
				}
		}
}
int jocabi()//jocabi迭带
{
	for (int k=0;k<Nmax;k++)
	{
		for(int i=0;i<5;i++)
		{
			double a_add=0;
			for(int q=0;q<5;q++)
			{
				if(q!=i)
					a_add=a_add+a[i][q]*x0[q];
			}
			x[i]=(b[i]-a_add)/a[i][i];
		}
		double e=0;
		for(i=0;i<5;i++)
		{
			if(fabs(x[i]-x0[i])>e)
			{
				e=fabs(x[i]-x0[i]);
			}
		}
		if (e<delta)
			return 1;
		for(i=0;i<5;i++)
			x0[i]=x[i];
		n1=k;
	}
	return n1;
}
int GS()
{
	for(int i=0;i<5;i++)
		x0[i]=x[i];
	for(int k=0;k<5;k++)
	{
		for(i=0;i<5;i++)
		{
			double  qu=0;
			for(int j=0;j<5;j++)
			{
				if(j!=i)
					qu=qu+a[i][j]*x[j];
			}
			x[i]=(b[i]-qu)/a[i][i];
		}
		double e=0;
		for(i=0;i<5;i++)
		{
			if(fabs(x[i]-x0[i])>e)
			{
				e=fabs(x[i]-x0[i]);
			}
		}
		if (e<delta)
			return 1;
		for(i=0;i<5;i++)
			x0[i]=x[i];
		n2=k;

	}
	return n2;
}
		
int main()
{
	

	mainele();
	jocabi();
	cout<<"*******************************************************"<<endl;
	
	cout<<"jocabi迭带的结果为"<<endl;
	for(int i=0;i<5;i++)
		cout<<x0[i]<<' ';
	cout<<endl<<"迭带次数为"<<n1<<endl;
	for( i=0;i<5;i++)
		x0[i]=x[i]=1;
	GS();
	cout<<endl;
	cout<<"*******************************************************"<<endl;
	
	cout<<"GS迭带的结果为"<<endl;
	for( i=0;i<5;i++)
		cout<<x0[i]<<' ';
	cout<<endl<<"迭带次数为"<<n2<<endl;
	cout<<endl;

	
	return 0;
}

⌨️ 快捷键说明

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