高斯消去法和列主元高斯消去法解线性方程组的程序(C语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//Gauss消去法解线性方程组
//参考教材《计算方法教程》第二版,西安交通大学出版社#include
int main(void)
{
float A[7][7]={{3,-5,6,4,-2,-3,8},
{1,1,-9,15,1,-9 ,2},
{2,-1,7,5,-1,6,11},
{-1,1,3,2,7,-1,-2},
{4,3,1,-7,2,1,1},
{2,9,-8,11,-1,-4,-1},
{7,2,-1, 2,7,-1,9}};
float b[7]={11,2,29,9,5,8,25};
float x[7]={0};
float Aik,S;
int i,j,k;
int size=7;
printf("A[][]\n");
for(i=0;i { for(j=0;j printf("%f ",A[i][j]); printf("\n"); } printf("b[]\n"); for(i=0;i printf("%f ",b[i]); printf("\n\n"); //消去过程 for(k=0;k { if(!A[k][k]) return -1; for(i=k+1;i { Aik=A[i][k]/A[k][k]; for(j=k;j { A[i][j]=A[i][j]-Aik*A[k][j]; } b[i]=b[i]-Aik*b[k]; } } //消去的结果 printf("A[]\n"); for(i=0;i { for(j=0;j printf("%f ",A[i][j]); printf("\n"); } printf("b[]\n"); for(i=0;i printf("%f ",b[i]); printf("\n\n"); //回代过程 x[size-1]=b[size-1]/A[size-1][size-1]; for(k=size-2;k>=0;k--) { S=b[k]; for(j=k+1;j { S=S-A[k][j]*x[j]; } x[k]=S/A[k][k]; } //solution printf("The solution x[]=\n"); for(i=0;i printf("%f ",x[i]); return 0; } /列主元Gauss消去法解线性方程组 //参考教材《计算方法教程》第二版,西安交通大学出版社#include #include int main(void) { float A[7][7]={{3,-5,6,4,-2,-3,8}, {1,1,-9,15,1,-9 ,2}, {2,-1,7,5,-1,6,11}, {-1,1,3,2,7,-1,-2}, {4,3,1,-7,2,1,1}, {2,9,-8,11,-1,-4,-1}, {7,2,-1, 2,7,-1,9}}; float b[7]={11,2,29,9,5,8,25}; float x[7]={0}; float Aik,S,temp; int i,j,k; float max;//列主元的绝对值 int col;//列主元所在的行 int size=7; printf("A[][]\n"); for(i=0;i { for(j=0;j printf("%f ",A[i][j]); printf("\n"); } printf("b[]\n"); for(i=0;i printf("%f ",b[i]); printf("\n\n"); //-------消去过程--------- for(k=0;k { max=fabs(A[k][k]); col=k; //查找最大元素所在的行 for(i=k;i { if(max { max=fabs(A[i][k]); col=i; } } printf("col:%d\n",col); for(j=k;j { temp=A[col][j]; A[col][j]=A[k][j]; A[k][j]=temp;