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

📄 gauss消去法解线性方程组.txt

📁 数值分析程序
💻 TXT
字号:
#include <stdio.h>
#include <malloc.h>
#include <math.h>

int SoLinQ(int n,float *matrix,float esp)
{
	float m,sum,*temp,*x;
	int i,j,k,add;
	temp=(float *)malloc((n+1)*sizeof(float));
	x=(float *)malloc(n*sizeof(float));
	for(i=0;i<n;i++)
	{
		if(fabs(matrix[i*(n+1)+i])<=esp) 
		{
			for(j=i+1;j<n;j++)
				if(fabs(matrix[j*(n+1)+i])>esp) 
				{
					for(k=0;k<=n;k++)
					{
						temp[k]=matrix[i*(n+1)+k];
						matrix[i*(n+1)+k]=matrix[j*(n+1)+k];
						matrix[j*(n+1)+k]=temp[k];
					}
					break;
				}
			if(fabs(matrix[i*(n+1)+i])<=esp) 
			{
				if(i==n-1) 
				{
					free(temp);
					free(x);
					return 0;
				}
				free(temp);
				free(x);
				return 1;
			}
		}
		for(j=i+1;j<n;j++)
		{
			m=matrix[j*(n+1)+i]/matrix[i*(n+1)+i];
			for(k=0;k<=n;k++)
				matrix[j*(n+1)+k]-=m*matrix[i*(n+1)+k];
		}
	}
	for(i=0;i<n;i++)
		for(j=0;j<=n;j++)
		{
			printf("%f ",matrix[i*(n+1)+j]);
			if(j==n) printf("\n");
		}
	for(k=n-1;k>=0;k--)
	{
		sum=matrix[k*(n+1)+n];
		for(add=1;k+add<n;add++)
			sum-=matrix[k*(n+1)+k+add]*x[k+add];
		x[k]=sum/matrix[k*(n+1)+k];
	}
	for(i=0;i<n;i++)
		printf("x%d=%f\n",i,x[i]);
	free(temp);
	free(x);
	return 2;
} 

void main()
{
	float *matrix;
	int	i,n,sign;
	printf("Please input the number of vars of the equation: ");
	scanf("%d",&n);
	matrix=(float *)malloc(n*(n+1)*sizeof(float));
	printf("Please input the        of");
	for(i=0;i<n*(n+1);i++)
		scanf("%f",&matrix[i]);
	sign=SoLinQ(n,matrix,1e-5);
	switch(sign)
	{
		case 0:printf("There is no only result!");break;
		case 1:printf("It's a invalid equation!");break;
		case 2:printf("The results are printed!");
	}
	free(matrix);
}

⌨️ 快捷键说明

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