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

📄 guass2.cpp

📁 guass算法的较强版
💻 CPP
字号:
#include<stdio.h>
#include<math.h>
#define rank 20
void main()
{
	int i,j,mi,k;
	float temp;
	double q;
	float a[rank][rank],b[rank],x[rank];
	for( i=0;i<rank;i++)    //给所有的A矩阵项先赋初值0
	{
		for(j=0;j<rank;j++)
		{
			a[i][j]=0;
		}
	}
	for(i=0;i<rank;i++)     //赋对角值
	{
		a[i][i]=3;
	}
	for(i=0;i<rank-2;i++)   //对称赋 -0.25
	{
		a[i][i+2]= -(0.25);
		a[i+2][i]= -(0.25);
	}
	for(i=0;i<rank-1;i++)   //对称赋 -0.5
	{
		a[i][i+1]= -(0.5);
		a[i+1][i]= -(0.5);
	}
	for(i=0;i<rank;i++)
	{
		for(j=0;j<rank;j++)
		{
	     printf("%f",a[i][j]);
		}
		printf("\n");
	}
	
	for(i=0;i<rank;i++)      //把系数矩阵赋值!
	{
		b[i]=3;
	}
	b[0]=b[19]=(4.50000);         
	b[1]=b[18]=(3.50000);
	for(i=0;i<rank;i++)
	{
		printf("%f\2t",b[i]);
	}

	for(i=0;i<rank-1;i++)      //选取最大的主元。
	{
		for(j=i+1,mi=i,q=fabs(a[i][i]);j<rank;j++)
			if(fabs(a[j][i])>q)
			{
				mi=j;
				q=fabs(a[j][i]);
			}
			if(i<mi)
			{
				temp=b[i];
				b[i]=b[mi];
				b[mi]=temp;			
				for(j=i;j<rank;j++)
				{
					temp=a[i][j];
					a[i][j]=a[mi][j];
					a[mi][j]=temp;
				}
			}
			for(j=i+1;j<rank;j++)   //  此为消元!!!!
			{
		      temp= -a[j][i]/a[i][i];
		      b[j]+=b[i]*temp;
		      for(k=i;k<rank;k++)
			  {
			    a[j][k]+=a[i][k]*temp;
			  }
			}
	}
	
	x[rank-1]=b[rank-1]/a[rank-1][rank-1];
	for(i=rank-2;i>=0;i--)       //回代求解
	{
		x[i]=b[i];
		for(j=i+1;j<rank;j++)
		{
			x[i]-=a[i][j]*x[j];
			
		}
		x[i]/=a[i][i];
	}
		
	printf("矩阵解如下:\n");
	for(i=0;i<rank;i++)	
		{
			printf("x%d=%f\n",i,x[i]);
		}
}
	




  







   

⌨️ 快捷键说明

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