线性方程组数值解法-列主元高斯消去法

来源:互联网 发布:转置矩阵与逆矩阵公式 编辑:程序博客网 时间:2024/05/19 12:11

 

//列主元高斯消去法/*  2(x1)+4(x2)+(x3)=4    2(x1)+6(x2)-(x3)=10(x1)+5(x2)+2(x3)=2*/#include<stdio.h>#include<math.h>void main(){void ColPivot(float *,int,float[]);int i;float x[3];float c[3][4]={   2,4,1,4,           2,6,-1,10,           1,5,2,2};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,k,t;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[j]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));}}

0 0
原创粉丝点击