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

📄 leqn.c

📁 在定时器中断中做LED的PWM输出 AT89C2051实现A/D转换的C51程序 单片机开发系统 指令系统 程序设计 定时与中断 系统扩展 接口技术 串行口
💻 C
字号:
//解线性方程组的主元消去法(无回代过程)。
// 5阶线性方程组如下:
//	3x+2y   + w-2t=-3
//	 x- y+2z+3w+5t= 5
//	   3y   +2w+ t=-6
//	-x   + z+ w   =-1
//	4x+ y+2z- w- t= 8

#define N  5   	//线性方程组的阶数
float A[N][N+1]={{3,2,0,1,-2,-3},{1,-1,2,3,5,5},{0,3,0,2,1,-6},
		{-1,0,1,1,0,-1},{4,1,2,-1,-1,8}} ;	//5阶线性方程组的增广系数矩阵
float X[N];	//5阶线性方程组的解:X=1.0,Y=-1.0,z=2.0,w=-2.0,t=1.0

void findmain (int i)////寻找第i列的主元,并将其所在行交换到当前处理行位置上
{
	int j,k;
	float c;
	c=A[i][i];k=i;//初始化主元在第i行
	for (j=i+1;j<N;j++) if (A[j][i]>c) {c=A[j][i];k=j;}//寻找主元所在行
	if (k!=i) for (j=0;j<=N;j++) //将主元所在行交换到当前处理行位置上
		{c=A[k][j];A[k][j]=A[i][j];A[i][j]=c;}
}

void divmain (int i)//将主元所在行的各个系数除以主元,使主元为1
{
	int j;
	float c;
	c=A[i][i];
	A[i][i]=1.0;
	for (j=i+1;j<=N;j++) A[i][j]/=c;
}

void del (int i) //进行第i列的消元处理
{
	int j,k;
	float c;
	for (j=0;j<N;j++) if (j!=i && A[j][i]) {
		c=A[j][i];A[j][i]=0;
		for (k=i+1;k<=N;k++) A[j][k] -= c*A[i][k];
		}
}

main ( )
{
	int i;
	for (i=0;i<N;i++) { //按行处理
		if (i<N-1) findmain (i);//寻找主元,并将其所在行交换到当前处理行位置上
		divmain (i) ; 	//将当前处理行的各个系数除以主元,使主元为1
		del (i); 	//进行消元处理
		}
	for (i=0;i<N;i++) X[i]=A[i][N];	//保存n阶线性方程组的解	
	while (1) ; //在这一行设置断点,中止程序运行,以便观察程序运行的结果 
}

⌨️ 快捷键说明

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