列主元高斯消去法.txt

来自「线性方程组数值解法 包括高斯赛德尔迭代法 矩阵直接三角分解法 列主元高斯消去法」· 文本 代码 · 共 46 行

TXT
46
字号
#include<stdio.h>
#include<math.h>
void main()
{
	void ColPivot(float*,int,float[]);
	int i;
	float x[3];
	float c[3][4]={0.101,2.304,3.555,1.183,
		-1.347,3.712,4.623,2.137,
		-2.835,1.072,5.643,3.035};
	ColPivot(c[0],3,x);
	for(i=0;i<=2;i++)
		printf("x[%d]=%f\n",i,x[i]);
}

void ColPivot(float*c,int n,float x[])
{
	int i,j,t,k;
	float p;
	for(i=0;i<=n-2;i++)
	{
		k=i;
		for(j=i+1;j<=n-1;j++)
			if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))
				k=j;
			if(k!=i)
				for(j=i;j<=n;j++)
				{
					p=*(c+i*(n+1)+j);
					*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
					*(c+k*(n+1)+j)=p;
				}
				for(j=i+1;j<=n-1;j++)
				{
					p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
					for(t=i;t<=n;t++)
						*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
				}
				}
	for(i=n-1;i>=0;i--)
	{
		for(j=n-1;j>=i+1;j--)
			(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
		x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
	}
}

⌨️ 快捷键说明

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